19

我有一个页面,应用户的请求,打开一个对话框并使用 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
4

3 回答 3

26

你可以这样做:

$.ajaxSetup()['cache']
于 2012-08-08T08:16:48.893 回答
1

你可以使用这个:

$.ajaxSettings['cache']
于 2015-07-11T17:19:32.450 回答
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,然后当您再次需要该设置时将它们添加回来,您就可以克服这个问题。肮脏,但它的工作..

于 2016-09-24T21:52:58.363 回答