在我的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代码之间传递数据变得更容易。
答案 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中的参数和名称与操作方法的参数匹配。