我有类似的东西
$.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"); })
我还没机会尝试这个。一旦我有几分钟我会尝试这个,但如果有人知道这也会很好。我也没有在文档中看到任何内容。
答案 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)
跟进评论的更新:
注意:全局回调函数应该 与各自的全球一致 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