ASP.NET MVC $ .ajax POST не отправляется правильно - PullRequest
2 голосов
/ 31 июля 2009

В JavaScript у меня есть следующее:

$.ajax({
        url: "/ajax/test",
        type: "POST",
        dataType: "html",
        data: '{"keyword" : "' + $('#tbxBrand').val() + '", "projectguid" : "<%= thisProject.ProjectGuid.ToString() %>", "userguid" : "<%= thisUser.UserGuid.ToString() %>"}',
        beforeSend: function() { },
        success: function(data) {
            alert(data);
        }
    });

В контроллере у меня есть:

public ActionResult Test()
    {
        string keyword = Request.Form["keyword"];
        return new JsonResult { Data = keyword };
    }

Однако Request.Form не содержит правильных ключей. На самом деле Request.Form выглядит как неправильный:

Request.Form = {%7b%22keyword%22+%3a+%22data%22%2c+%22projectguid%22+%3a+%22cedce659-fd91-46c8-8f69-e527a38cffc2%22%2c+%22userguid%22+%3a+%2252ff20ab-cdf1-4dae-b539-645b6bf461a7%22%7d}

Я не могу понять, что здесь не так. Кто-нибудь может помочь?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 31 июля 2009

Не цитируйте данные. Объект будет преобразован в строку запроса. Если вы используете строку, она должна быть в формате строки запроса. Кроме того, я думаю, вам будет лучше использовать одинарные кавычки вокруг тегов. Это позволит вам использовать двойные кавычки внутри тегов, если это необходимо.

$.ajax({
    url: "/ajax/test",
    type: "POST",
    dataType: "html",
    data: {
           "keyword" :  $('#tbxBrand').val(),
           "projectguid" : '<%= thisProject.ProjectGuid.ToString() %>',
           "userguid" : '<%= thisUser.UserGuid.ToString() %>'
          },
    beforeSend: function() { },
    success: function(data) {
        alert(data);
    }
});
2 голосов
/ 31 июля 2009

Я использую это;

    function postComment(id) {
    var commentText = jQuery.trim($("#textbox" + id.toString()).val());

    $.post("/jQueryTests/jQueryAddMessageComment", { commentText: commentText }, function(newComment) {
        $("#divComments" + id.toString()).html(newComment);
    });
}

тогда в c #

        public ActionResult jQueryAddMessageComment(string commentText)
    {
        //postComment
        return PartialView("commentList", new FormViewModel { LastComment = commentText });
    }

Я не использую Request.Form, поскольку данные должны передаваться в качестве параметра в ваш метод c #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...