我正在向控制器操作发布表单。我从控制器收到错误。
这是我想要的行为: 如果错误 - 在同一页面上显示正确的错误消息而没有任何页面刷新。 如果成功 - 再次在页面上显示成功消息没有页面刷新
我得到的是该页面使用不同的URL完全刷新并显示: {“status”:“失败”,“msg”:“\ u0027Name \ u0027”}
网址更改为:../respond / update,这是我发布到
的操作基本上我想抓住这个失败状态并在一个范围内显示msg。
但是为什么它会把我带到另一个页面?
以下是观点:
@using (Html.BeginForm("Update", "Respond", FormMethod.Post, new { id = "frmUpdate" }))
{
//have my form here
//submit button
}
Here is the js handler that posts the form:
$('#frmUpdate').submit(function () {
//validation
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
beforeSend: //show loader
success: function (result) {
alert(result.status);
},
error: function (xhr, status, error) { alert('error'); }
});
return false;
});
Here is controller:
[HttpPost]
public ActionResult Update(ResponseModel model)
{
return Json(new { status="Failed", msg = "Name" });
}
修改 在Firefox中,它需要不同的URL。 但在IE8中,我从jquery本身得到了这个错误。有趣...
消息:对象不支持此属性或方法 行:28 查尔:12724 代码:0 URI:/Content/js/external/jquery-1.6.2.min.js?v=3
答案 0 :(得分:1)
我认为您应该通过这样做来停止默认的提交行为:
$('#frmUpdate').submit(function (e) {
e.preventDefault();
<your code here>
});
否则表单提交将导致您想要避免的行为。 希望这会有所帮助。
答案 1 :(得分:0)
@using (Html.BeginForm("Update", "Respond", FormMethod.Post, new { id = "frmUpdate" }))
{
//have my form here
//submit button
}
如果您使用提交按钮,则会发布该页面。您需要使用类型按钮而不是提交。
它会起作用。
@using (Html.BeginForm("Update", "Respond", FormMethod.Post, new { id = "frmUpdate" }))
{
//have my form here
//use type button
}