我已经阅读了描述如何读取jQuery ajax设置值的答案here和here。不过,我的问题是:
如果我之前使用ajaxSetup
之类的设置调用$.ajaxSetup({cache: true})
函数,然后调用$.ajaxSetup()
(没有参数),这个调用是否有任何副作用?
或者更直接地,除了返回包含ajax设置的普通对象之外,调用$.ajaxSetup()
没有参数做任何事情?
我上面引用的答案都是以这种方式调用ajaxSetup
以便读取设置的值,而我无法在jQuery文档中找到任何正式答案来指示调用{{ 1}}没有参数,可能是因为它的使用非常气馁。
在我的浏览器中,我通过加载jQuery运行一个简单的测试,运行ajaxSetup
后跟$.ajaxSetup({async: false});
,发现async的值仍然没有改变(默认值为true,所以如果调用$.ajaxSetup();
将设置重置为默认值,然后应该更改async的值),但这可能不足以证明在以这种方式调用函数时不会发生副作用。
答案 0 :(得分:1)
调用没有参数的$ .ajaxSetup()除了返回包含ajax设置的普通对象之外还会做什么吗?
没有
示例强>
/forest

// set a new custom url
$.ajaxSetup({
url: 'CHANGED'
});
// call it again with no params
$.ajaxSetup();
// the url is still the custom url
console.log('url: ' + $.ajaxSetup().url);

<强>为什么吗
如果我们查看code for ajaxSetup,我们会看到,当使用单个参数调用时,它会返回调用:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
其中ajaxExtend( jQuery.ajaxSettings, target );
是您传递给target
的单个参数。
现在,在ajaxExtend内,我们可以看到它尝试使用ajaxSetup()
循环遍历同一个参数。
相关代码:
for in
由于你没有通过任何东西,基本上你正在做
function ajaxExtend( target, src ) {
for (var key in src) {
// here is where target, which in this case is jQuery.ajaxSettings, gets overriden
}
return target;
}
从不进入function ajaxExtend( target, src ) {
for (var key in undefined) {
// this is never reached
}
return target;
}
循环并返回for in
的当前值。