我有一个页面,根据用户的请求,打开一个对话框,并使用jQuery的load()方法将外部文件加载到其中。
外部文件包含指向脚本的链接(它也可以作为独立页面工作),这很好,只有jQuery强制加载这些脚本(通过添加时间戳),即使它们已经加载了。
我需要告诉jQuery在看到这些脚本时允许缓存。 bug report 的答案建议使用
$.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
答案 0 :(得分:26)
你可以这样做:
$.ajaxSetup()['cache']
答案 1 :(得分:1)
你可以用这个:
$.ajaxSettings['cache']
答案 2 :(得分:0)
// 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
那样手动删除它们,然后在需要再次设置时再添加它们,就可以解决这个问题。很脏,但它有效..