$ .ajax()之间的差异;和$ .ajaxSetup();

时间:2011-10-13 06:52:57

标签: jquery ajax

jQuery中$.ajax();$.ajaxSetup();之间的区别如下:

$.ajax({
    cache:false
});

$.ajaxSetup({
    cache:true
});

另外,哪一个是最佳选择?

5 个答案:

答案 0 :(得分:106)

以下将阻止所有未来的AJAX请求被缓存,无论您使用哪种jQuery方法($ .get,$ .ajax等)

$(document).ready(function() {
  $.ajaxSetup({ cache: false });
});

你应该使用$ .ajax,它允许你为实例的关闭缓存:

$.ajax({url: "myurl", success: myCallback, cache: false});

答案 1 :(得分:15)

ajaxSetup将默认值设置为对所有ajax请求有效。在此之后,您无需在$.ajax

中执行相同的设置

$.ajax中的所有设置仅对该ajax调用有效。

答案 2 :(得分:5)

第一个基于每个请求禁用缓存,第二个默认设置为全局禁用所有AJAX函数。

答案 3 :(得分:2)

为避免缓存,一种选择是为相同的资源或数据提供不同的URL。要生成不同的URL,您可以在URL的末尾添加随机查询字符串。此技术适用于JQuery,Angular或其他类型的ajax请求。

myURL = myURL +"?random="+new Date().getTime();

JQuery通过$.ajax({cache:false});$.ajaxSetup({cache:false});

使用类似的技术

$.ajax({cache:false})应用包含它的技术,$.ajaxSetup({cache:false});将技术应用于所有AJAX函数。

答案 4 :(得分:0)

  

另外,哪一个是最佳选择?

根据jQuery api documentation,建议不要使用$.ajaxSetup()

  

注意:此处指定的设置将影响对$.ajax或基于Ajax的衍生产品(如$.get())的所有调用。这可能导致不良行为,因为其他呼叫者(例如,插件)可能期望正常的默认设置。出于这个原因我们强烈建议不要使用此API 。相反,在调用中显式设置选项或定义一个简单的插件来执行此操作。