序列化表单数据在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方法的参数匹配。