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

在我的HTML中我有

Title goes here

@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { id = "myFormID" })) { }

在我的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 + "
" + textStatus + "
" + 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代码之间传递数据变得更容易。

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

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

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

如果你需要传递id和testinput作为参数,那么使用

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

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