有没有办法让$ .ajaxSetup()的范围扩展到函数体?我无法获得$ .ajaxSetup()来影响函数中的$ .ajax()调用。这是一个例子:
使用以下代码,函数foo()发送的ajax请求不包含ajaxSetup中指定的testHeader:
$.ajaxSetup({
headers: {
testHeader: testValue
}
});
function foo(theData) {
$.ajax({
url: testUrl,
data: theData,
type: 'POST',
contentType: 'application/json',
dataType: 'json'
});
}
但是,使用以下代码,testHeader确实包含在foo()发送的ajax请求中。
function foo(theData) {
$.ajaxSetup({
headers: {
testHeader: testValue
}
});
$.ajax({
url: testUrl,
data: theData,
type: 'POST',
contentType: 'application/json',
dataType: 'json'
});
}
我认为ajaxSetup()应该是全局的,其范围应扩展到函数体。我错过了什么?感谢。
答案 0 :(得分:2)
“全球”可能是用词不当。
$ .ajaxSetup只会影响当前的jQuery对象。如果您在另一个页面中加载jQuery,它将不会受到影响。
答案 1 :(得分:1)
好吧,我认为问题是$ .ajaxSetup()是函数调用,而不是变量。所以当调用foo()时,$ .ajaxSetup()还没有被调用。以下是我如何工作:将$ .ajaxSetup()放入$(function(){})调用中:
$(function () {
$.ajaxSetup({
headers: {
testHeader: testValue
}
});
});
然后foo()中的ajax请求将根据需要包含testHeader。不确定这是否是最佳解决方案,但它对我有用。