Сериализация данных формы не работает в приложении asp.net mvc - PullRequest
1 голос
/ 26 октября 2011

В моем HTML у меня есть

<h2>Title goes here</h2>

    @using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { id = "myFormID" })) {
        <input type="text" id="testinput" name="testinput" />
        <input type="text" id="testinput2" name="testinput2" />

        <input type="button" value="click me" onclick="submitForm();" />
    }

в моем JS у меня есть

function submitForm() { 

    dataString = $("#myFormID").serialize();

    alert(dataString);

    $.ajax({

        type: "POST",
        url: "/Controller/Action",
        data: dataString,
        cache: false,
        dataType: "json",

        success: function (data) {

            alert('success!');
        },

        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(XMLHttpRequest + "<br />" + textStatus + "<br />" + errorThrown);

        }

    }); 

}

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

    public ActionResult Action()
    {
        return View();
    }



    [HttpPost]
    public ActionResult Action(string testinput, string testinput2)
    {
        return View();
    }

При нажатии на кнопку «кликни мне» я получаю следующую ошибку: "parsererror
Неверный JSON:"

Что я делаю не так? Я просто пытаюсь передать данные формы в jquery .ajax.

Оператор оповещения выдает «testinput = gdfgf & testinput2 = gfgfd», что является правильными значениями, которые я ввел. ТАК ошибка кажется при сериализации .... Я использую MVC 3 с бритвой ... У меня сложилось впечатление, что передача данных между моделью / видом и кодом javascript стала проще.

Ответы [ 2 ]

2 голосов
/ 26 октября 2011

Я почти уверен, что это не имеет ничего общего с данными, которые вы передаете вызову $.ajax, и всем, что связано с данными, возвращаемыми /Controller/Action. Откройте Fiddler и изучите ответ. скорее всего, он искажен (или не совсем JSON).

0 голосов
/ 26 октября 2011

если ваш метод принимает только int id в качестве параметра, тогда dataString следует объявить как

var dataString = { id: $("#myFormID").val() };

, если вам нужно передать id и testinput в качестве параметров, тогда используйте

var dataString = { id: $("#myFormID").val(), testinput: $("#testinput").val() };

Параметры и имена в DataString Mutch соответствуют параметрам вашего метода действия.

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