Call ajax.fail() from ajax.success()



所以我只想从.success方法中有条件地调用.fail方法,怎么做?

var ajaxCall = $.ajax({
    url: pUrl,
    type: "POST",
    data: pData,
    dataType: "json",
    processData: false,
    contentType: "application/json; charset=utf-8"
})
.always(function () {
    alert("always");
})
.success(function (data) {
    if (data == "fail") { ajaxCall.fail(); return; }
    alert("success");
})
.fail(function () {
    alert("fail");
});

$.ajax返回一个promise,因此不能直接执行。你最好的机会是:

var fail = function () {
    alert("fail");
};
var ajaxCall = $.ajax({
    url: pUrl,
    type: "POST",
    data: pData,
    dataType: "json",
    processData: false,
    contentType: "application/json; charset=utf-8"
})
.always(function () {
    alert("always");
})
.success(function (data) {
    if (data == "fail") { fail(); return; }
    alert("success");
})
.fail(fail);

您可以简单地调用为this.fail();,如下所示:-

var ajaxCall = $.ajax({
    url: pUrl,
    type: "POST",
    data: pData,
    dataType: "json",
    processData: false,
    contentType: "application/json; charset=utf-8"
})
.always(function () {
    alert("always");
})
.success(function (data) {
    if (data == "fail") 
    { 
        this.fail();
        return; 
    }
    alert("success");
})
.fail(function () {
    alert("fail");
});

更多信息:-

http://www.youlikeprogramming.com/2013/07/jqueryajax-conditionally-call-error-method-fro-success/

只需使用"this"关键字就可以实际调用ajax调用的任何其他方法,我已经为error方法制作了一个示例。

$.ajax({
                    url: 'url',
                    dataType: 'json',
                    contentType: 'application/json; charset=utf-8;',
                    type: 'GET',
                    success: function (dataReturn) {
                        this.error('error called explicitly');
                    },
                    error: function (errorMessage) { 
                        if(errorMessage.ResponseText) // or directly compare as errorMessage !== "error called explicitly" if u send the same message elsewhere
                            //actual error code
                        else
                            alert(errorMessage); 
                    }
                });

希望这有帮助:)

最新更新