我尝试向MVC操作发布帖子并在网页上显示生成的JSON。该操作接收post命令,但结果显示在新页面上,而不是同一页面上。例如,它会询问我是否要下载或打开该文件。 PS。我也在使用jQuery验证。
我的jquery:
submitHandler: function(form) {
$('#loading').show(); //adds waiting spinner
$.post(
$(form).attr('action'),
form.serialize(),
function(data) {
alert(data);
},
"json"
);
return false;
}
我的行动:
[AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken]
public ActionResult ContactUs(FormCollection collection) {
...
return Json("OK");
}
我一直在敲打这个问题并且读过太多的网页搜索,但仍无济于事。任何帮助将不胜感激。
答案 0 :(得分:1)
我建议您使用允许您执行此操作的jquery form plugin:
submitHandler: function(form) {
$('#loading').show(); //adds waiting spinner
$(form).ajaxSubmit();
}
您还可以将选项传递给ajaxSubmit
方法:
$(form).ajaxSubmit({
success: function(data) {
alert(data);
}
});
如果您不想使用任何其他插件,请务必执行此操作(请注意form
已包含在$()
中以便调用serialize
方法):< / p>
$.post(
form.action,
$(form).serialize(),
function(data) {
alert(data);
},
'json'
);
答案 1 :(得分:0)
你可以在行动中测试这个
[AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken]
public ActionResult ContactUs(FormCollection collection) {
...
return new JsonResult() { data = "OK"};
}
答案 2 :(得分:0)
就像@Akyegane解决方案一样,但我会这样做
[AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken]
public ActionResult ContactUs(FormCollection collection) {
return Json({ data = "OK"});
}
答案 3 :(得分:0)
谢谢, 我正在浏览JQuery验证网站,它说要尝试这样的事情:
submitHandler: function(form) {
$(form).ajaxSubmit();
}
我做了,它有点工作。表单正确提交,但我在FireBug中收到此错误:
$(form).ajaxSubmit不是函数
我搜索过一堆网站,但没有解决方案。我应该使用jquery表单插件而不是jquery validate吗?我正在使用最新的jquery和Jquery通过以下方式验证CDN包:
http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js
http://ajax.microsoft.com/ajax/jQuery.Validate/1.7/jQuery.Validate.min.js