如何从jQuery的ajaxSetup获取当前值

我有一个页面,根据用户的请求,打开一个对话框,并使用jQuery的load()方法将外部文件加载到其中。

外部文件包含指向脚本的链接(它也可以作为独立页面工作),这很好,只有jQuery强制加载这些脚本(通过添加时间戳),即使它们已经被加载。

我需要告诉jQuery在看到这些脚本时允许缓存。 错误报告的答案建议使用

$.ajaxSetup({ cache: true }) 

…它确实有效,但更改了所有未来AJAX请求的设置。 有没有办法做这样的事情:

 // Get current setting - code not valid but is what I want var defaultCache = $.ajaxSetup("cache"); $.ajaxSetup({cache:true}); // Now set it to what I want // do stuff… $.ajaxSetup({cache:defaultCache}); // Set it back to the default 

你可以这样做:

 $.ajaxSetup()['cache'] 

你可以用这个:

 $.ajaxSettings['cache'] 
 // Save current global ajax setup $.cachedAjaxSetup = $.extend(true, {}, $.ajaxSetup()); // change global ajax setup $.ajaxSetup({ headers : { "Authorization": 123 } }); // revert back to saved ajax setup $.ajaxSetup( $.cachedAjaxSetup ); 

(令人讨厌的)问题是,对象将被合并,因此对于上面的示例, headers设置将保留,因为它在原始对象上不存在。

如果您知道添加了哪些属性,则可以解决此问题,将其缓存并手动删除它们,如delete $.ajaxSettings.headers ,然后在需要再次设置时将其添加回来。 脏,但它的工作..