如何从jQuery ajaxSetup获取当前值

时间:2012-08-08 08:12:56

标签: jquery

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

3 个答案:

答案 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那样手动删除它们,然后在需要再次设置时再添加它们,就可以解决这个问题。很脏,但它有效..