我有一个由JQuery序列化的表单,并通过.ajax()发布到url。
问题是无论服务器是否返回错误代码,总是会调用'success:'函数。
事实上,甚至在服务器响应之前就会触发成功(我已经在为请求提供服务的服务器方法上设置了断点 - 即使在此方法完成之前,也会触发成功)。如果服务器返回错误代码(例如状态代码500),JQuery会调用BOTH成功和错误事件!
任何想法发生了什么?这是我的jquery代码:
$("#a-dialog").dialog({
autoOpen: false,
height: 300,
width: 400,
modal: true,
buttons: {
"Submit": function() {
$.ajax({
type: 'POST',
url: theURL,
data: $("#a-dialog-form").serialize(),
success: alert('ok!') // THIS IS ALWAYS CALLED (IMMEDIATELY)
});
},
},
});
更新
这对我来说是一个愚蠢的错误!感谢blue112快速指出:)
答案 0 :(得分:7)
这是正常的,您必须将其作为回调传递,例如
$.ajax({
type: 'POST',
url: theURL,
data: $("#a-dialog-form").serialize(),
success: function(){alert('ok!');} // The function will be called upon success.
});
答案 1 :(得分:1)
您需要通过传递函数定义来提供指向函数的指针,或者通常使用它。
你要做的就是这样:
"Submit": function() {
$.ajax({
type: 'POST',
url: theURL,
data: $("#a-dialog-form").serialize(),
success: function (data) {
alert('ok!') // THIS IS ALWAYS CALLED (IMMEDIATELY)
}
});
},
},
在您的情况下发生的事情是立即调用警报,因此即使ajax请求根本没有被触发,您也会看到警告消息。