0

假设我有一个简单的功能:

    function test(url){
var AjaxCall = $.ajax({
        type: GET,
        url: url,
        data: {},
        success: function(data,status,xhr){
             return xhr
        },
        error: function(xhr,e){
             return xhr
        }
});


    if(xhr.status === 200)console.log('success');


}

所以我想要的是在调用它并在调用中添加回调以处理这些错误之后而不是在函数内部处理错误,这可能吗?

4

1 回答 1

1

如果您使用低于 1.8 的 jQuery,是的,您可以通过设置async = false

  function test(url){
var AjaxCall = $.ajax({
        type: GET,
        url: url,
        async : false
        data: {},
        success: function(data,status,xhr){
             return xhr
        },
        error: function(xhr,e){
             return xhr
        }
});
}

请注意,这已被弃用,并且有充分的理由

从 jQuery 1.8 开始,不推荐在 jqXHR ($.Deferred) 中使用 async: false ;您必须使用成功/错误/完成回调选项而不是 jqXHR 对象的相应方法,例如 jqXHR.done() 或已弃用的 jqXHR.success()。

http://api.jquery.com/jquery.ajax/

function test(url){
    var AjaxCall = $.ajax({
            type: GET,
            url: url,
            data: {},
            complete: function(xhr, status){
                 if(xhr.status === 200)console.log('success');
            }
    });
}

不,你不能用这个方法从你的函数中返回一个值。这不是异步的工作方式。如果要返回,则必须设置 async = false ,这违背了使用 ajax 的目的。

于 2015-03-27T06:51:52.773 回答