Ajax成功函数没有运行

时间:2014-08-04 07:09:40

标签: javascript jquery ajax json wordpress

我有以下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,如何让回调运行?

由于

2 个答案:

答案 0 :(得分:1)

也许您需要使用complete代替successerror

$.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 {
  // ...
}