function postForm()
{
$.ajax({
type: "POST",
data: $("#myForm").serialize(),
dataType: "json",
url: '<%= Url.Action("JSONRequest","Home") %>',
success: function(result)
{
window.alert(result.name);
},
error : function()
{
window.alert('error');
}
});
}
Html.BeginForm("JSONRequest", "Home", FormMethod.Post, new { id = "myForm" });
Html.TextBox("mazhar")
<input type="submit" onclick="postForm" />
Html.EndForm();
public ActionResult JSONRequest(FormCollection form)
{
string a = form["mazhar"];
var data = new { name = "aaaa", Success = "Record is Succesfully Saved", ErrorMessages = "abc" };
return Json(data);
}
好的,问题是运行此代码后会打开对话框,要求保存文件。 有人可以告诉我如何解决这个问题吗?为什么最后会出现这个盒子?
请您参考如下方法:
您需要通过返回 false
取消默认表单提交按钮内onclick
处理程序:
<input type="submit" onclick="postForm(); return false;" />
话虽这么说,我会建议你一个更好的解决方案。使用jquery.form插件使您能够ajaxify HTML 表单。这样可以简化代码中的大部分重复内容:
Html.BeginForm("JSONRequest", "Home", FormMethod.Post, new { id = "myForm" });
Html.TextBox("mazhar")
<input type="submit" value="OK" />
Html.EndForm();
在 JavaScript 中:
$(function() {
$('#myForm').ajaxForm({
success: function(result) {
window.alert(result.name);
},
error : function() {
window.alert('error');
}
});
});
这样您就不再需要指定 url、方法、手动序列化表单字段等...您也不需要使用 JavaScript 函数污染您的 HTML 标记。这是不引人注目的 javascript。这种方法的另一个优点是,现在您将能够将此 javascript 外部化到单独的静态 .js 文件中,因为它不再依赖于服务器端代码 ( <%= Url.Action("JSONRequest","Home") %>
),并且您将受益于减少带宽和缓存静态资源.