序列化表单数据在asp.net mvc app中不起作用

时间:2011-10-26 16:49:06

标签: asp.net-mvc json jquery

在我的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&amp; testinput2 = gfgfd”,这是我输入的正确值。所以错误似乎是序列化时.... 我正在使用带有剃刀的MVC 3 ...我的印象是在模型/视图和javascript代码之间传递数据变得更容易。

2 个答案:

答案 0 :(得分:2)

我几乎是肯定的,与您传递给$.ajax调用的数据以及/Controller/Action返回的数据无关。打开Fiddler并检查响应。它可能是畸形的(或者根本不是JSON)。

答案 1 :(得分:0)

如果您的方法仅接受int id作为参数,则dataString应声明为

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

如果您需要将id和testinput作为参数传递,请使用

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

dataString mutch中的参数和名称与操作方法的参数匹配。