$.ajax(); 和 $.ajaxSetup(); 之间的区别是什么?

58

在jQuery中,$.ajax();$.ajaxSetup();有什么区别?

$.ajax({
    cache:false
});

$.ajaxSetup({
    cache:true
});

此外,哪个选项最好?

5个回答

109

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

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

你应该使用$.ajax,这将允许你在实例中关闭缓存:

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

9
注意:您无需等待“ready”事件即可更改设置。如果内联脚本中有AJAX调用,则实际上等待“ready”事件已经太迟了。 - Guffa

16

ajaxSetup设置所有Ajax请求的默认值。使用它后,您就不必在$.ajax中进行相同的设置。

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


5

第一个选项可以在每个请求的基础上禁用缓存,第二个选项则将其设置为默认情况下对所有AJAX函数进行全局禁用。


1
为了避免缓存,一种选择是为相同的资源或数据提供不同的 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函数的技术。

0
另外,哪一个是最佳选项?
根据jQuery API文档,不建议使用$.ajaxSetup()
引用如下:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接