你能推迟jquery 1.5中的ajax设置吗?

时间:2011-03-02 19:10:31

标签: jquery ajax

我有类似的东西

 $.ajaxSetup({
        cache: false
    });

我很奇怪你能做ajaxSetup,就像你可以做$ .ajax

一样
var jqxhr = $.ajax({ url: "example.php" })
    .success(function() { alert("success"); })
    .error(function() { alert("error"); })
    .complete(function() { alert("complete"); });

我可以吗

 var a =    $.ajaxSetup({
            cache: false
        })

然后

a.success(function() { alert("success"); })

我还没机会尝试这个。一旦我有几分钟我会尝试这个,但如果有人知道这也会很好。我也没有在文档中看到任何内容。

2 个答案:

答案 0 :(得分:1)

AFAIK,不,你不能这样做 - .ajaxSetup()不是defered object,与jQuery v1.5中的.ajax() 不同 。所以你只会得到一个错误,说该对象没有这些方法。

如果您要执行的操作是设置每个.ajax()来电.ajaxSetup()设置所有.ajax()来电的默认设置)。您可以访问全局ajax回调,例如:

  • $.ajaxComplete(function(){alert("complete");})
  • $.ajaxError(function(){alert("error");})
  • $.ajaxSuccess(function(){alert("success");})

    如果你想对所有 ajax调用执行操作,那么这是你的目标吗?您还可以访问所有回调参数:

    .ajaxError(event, XMLHttpRequest, ajaxOptions, thrownError)


    跟进评论的更新:

    根据docs for .ajaxSetup()

      

    注意:全局回调函数应该   与各自的全球一致   Ajax事件处理程序   方法:.ajaxStart().ajaxStop(),   .ajaxComplete().ajaxError(),   .ajaxSuccess().ajaxSend()而非   而不是在选项对象中   $.ajaxSetup()

    因此看起来像statusCode没有像1.5中添加的回调那样的全局处理程序。然而,根据docs

    再次
      

    如果请求成功,则   状态代码功能也是一样的   参数作为成功回调;如果   它导致错误,他们采取了   与错误回调相同的参数。

    所以我想,你可以使用例如:

    $('body').ajaxSuccess(function(e, xhr, settings) {
        if (xhr.status == "200")
            alert("Your call to: '"+settings.url+"' was a success (status code: "+xhr.status+")");
    });
    
    $('body').ajaxError(function(e, xhr, settings) {
        if (xhr.status == "401")
            alert("You are not logged into the remote page!");
        if (xhr.status == "404")
            alert("The remote page could not be found: '"+settings.url+"'(status code: "+xhr.status+")");
    });
    

    查看demo here它显示成功和未成功的.ajax()来电 - 显示本地和全球行动,包括处理不同的状态代码。

  • 答案 1 :(得分:0)

    据我了解,AjaxSetup(..)会根据您的选择修改jQuery.AjaxSettings对象。所以你可以写

     jQuery.ajaxSettings.cache=false
    

    获得相同的结果。

    可在此处找到更多详细信息:http://onwebdev.blogspot.com/2010/06/jquery-unveiled-ajaxsettings-class.html