[英]Jquery post callback function fail and done always being called
我有一个API控制器,如果它工作正常,则返回HttpStatusCodeResult 200;如果他们无法注册,则返回500。 问题是无论返回什么状态码,.done和.fail都将被调用。 但是,该信息已发布或未正确发布。 这是我的帖子功能。 任何想法可能导致这种情况将不胜感激?
function register() {
$.post("../api/Register",
{
'Email': $("#rEmail").val(),
'Password': $("#rPassword").val()
})
.done((function () {
alert("Thank you for registering!");
})())
.fail((function () {
alert("Email already exists");
})());
}
编辑:问题是,当jquery.unobtrusive应该防止此情况发生时,它正在重新加载页面。 该修复程序或解决方法将其更改为按钮而不是表单。
问题是您要立即执行传递给done
和fail
。 这导致这些功能在那时和那里立即执行。
所以只需通过更改此函数本身来传递
.done((function () {
alert("Thank you for registering!");
})())
对此
.done(function () {
alert("Thank you for registering!");
})
您确实不应该在预期的注册失败(例如“电子邮件已存在”)的情况下发送500的http状态……这应该由一个表示成功/失败的参数作为200响应的一部分来处理。
您可以使用成功或错误回调来处理意外的内部服务器错误(状态500),如下所示:
$.ajax({
url : "../api/Register",
type : "post",
data : {"Email" : "you@example.com", "Password" : "pw"},
dataType : "json",
success : function(response){
// handle http 200 responses
if(response.registrationApproved){
alert("Thank you for registering!");
}else{
alert("email exists");
}
},
error : function(){
// handle 500 or 404 responses
alert("server call failed");
},
complete : function(){
// if needed.. this will be called on both success and error http responses
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.