我有以下Ajax请求。目前,如果json响应为true
,则成功回调运行。但是如果json响应为false
,那么即使Ajax请求本身成功完成,也不会运行成功回调。
$.ajax({
url: "http://testdomain.com/wp-admin/admin-ajax.php",
type: "POST",
dataType: "json",
cache: false,
data: {
action: 'check_username',
user: user_email
},
success: function(json) {
if (json.user_exists == true) {
$.ajax({
url: "http://testdomain.com/wp-admin/admin-ajax.php",
type: "POST",
dataType: "json",
cache: false,
data: {
action: 'auto_login',
user: user_email
},
success: function(json) {
$('#aux_lightbox_overlay').fadeOut();
}
});
}
if (json.user_exists == false) {
$.ajax({
url: "http://testdomain.com/wp-admin/admin-ajax.php",
type: "POST",
dataType: "json",
cache: false,
data: {
action: 'auto_register',
user: user_email
},
success: function(json) {
$('#aux_lightbox_overlay').fadeOut();
}
});
}
}
});
所以我的问题是,即使回复是false
,如何让回调运行?
由于
答案 0 :(得分:1)
也许您需要使用complete
代替success
和error
。
$.ajax({
url: "http://testdomain.com/wp-admin/admin-ajax.php",
type: "POST",
dataType: "json",
cache: false,
data: {
action: 'check_username',
user: user_email
},
complete: function(json) {
if (json.user_exists == true) {
$.ajax({
url: "http://testdomain.com/wp-admin/admin-ajax.php",
type: "POST",
dataType: "json",
cache: false,
data: {
action: 'auto_login',
user: user_email
},
success: function(json) {
$('#aux_lightbox_overlay').fadeOut();
}
});
}
if (json.user_exists == false) {
$.ajax({
url: "http://testdomain.com/wp-admin/admin-ajax.php",
type: "POST",
dataType: "json",
cache: false,
data: {
action: 'auto_register',
user: user_email
},
success: function(json) {
$('#aux_lightbox_overlay').fadeOut();
}
});
}
}
});
答案 1 :(得分:0)
您确定当用户不存在时,json.user_exists
确实等于false
吗?如果我理解正确,if (json.user_exists == false){...}
语句不会被触发,所以那里有一些奇怪的东西。
对于更强大的代码,您可以更改
if (json.user_exists == true) {
// ...
}
if (json.user_exists == false){
// ...
}
进入
if (json.user_exists == true) {
// ...
}
else {
// ...
}