如何在jQuery.get调用中设置caching:false

jQuery.get()是get调用jQuery.ajax()的简写。 但是,当我在.get()调用的数据中设置cache:false时,发送给服务器的是一个名为cache的参数,其值为false。 虽然我的意图是发送带有数据的时间戳到服务器,以防止caching,这是如果我在jQuery.ajax数据中使用cache: false 。 我怎么做到这一点,而不重写我的jQuery.get调用jQuery.ajax调用或使用

 $.ajaxSetup({ // Disable caching of AJAX responses cache: false }); 

更新:谢谢大家的答案。 你们都是对的 但是,我希望有一种方法让get调用知道你不想caching,或者将这个值发送到底层的.ajax(),这样就知道该怎么做。

我a。 寻find目前为止确定的三种方式以外的第四种方式:

  1. 通过ajaxSetup在全球范围内执行此操作

  2. 使用.ajax调用而不是.get调用

  3. 通过在您的.get调用中添加一个持有时间戳的新参数来手动执行此操作。

我只是认为这个能力应该被构build到.get调用中。

对我来说,正确的做法是列出的。 无论是ajaxajaxSetup 。 如果你真的想使用get而不使用ajaxSetup那么你可以创build自己的参数,并给它的当前date/时间的值。

然而,我会质疑你的动机,不使用其他方法之一。

自己添加参数。

 $.get(url,{ "_": $.now() }, function(rdata){ console.log(rdata); }); 

从jQuery 3.0开始,你现在可以做到这一点:

 $.get({ url: url, cache: false }).then(function(rdata){ console.log(rdata); }); 

我认为你必须使用AJAX方法,而不是让你closurescaching:

 $.ajax({ url: "test.html", data: 'foo', success: function(){ alert('bar'); }, cache: false }); 

根据JQuery文档, .get()仅将urldata (content), dataTypesuccess callback作为其参数。 你真正想要做的是在发送之前修改jqXHR对象。 使用.ajax() ,这是通过beforeSend()方法完成的。 但是由于.get()是一个快捷方式,它不允许它。

尽pipe将.ajax()调用切换到.get()调用应该相对容易。 毕竟, .get()只是.ajax()一个子集,所以你可以使用.ajax()所有默认值.ajax()当然,除了beforeSend() )之外。

编辑:

::看Jivings的答案::

噢,忘了cache参数! 虽然beforeSend()对于添加其他头文件非常有用,但内置的cache参数在这里要简单得多。

我在比赛中很晚,但这可能会帮助其他人。 我用$ .get打了同样的问题,我不想盲目closurescaching,我不喜欢时间戳补丁。 所以经过一番研究之后,我发现你可以简单地使用$ .post来代替不使用caching的$ .get。 就那么简单。 🙂

在使用Below Method的jQuery.get调用中设置caching:false

使用新的Date().getTime(),这将避免冲突,除非你在同一个毫秒内发生多个请求。

要么

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

 $.ajaxSetup({ cache: false }); 

请注意,callback语法已被弃用 :

弃用通知

jQuery 1.5中引入的jqXHR.success(),jqXHR.error()和jqXHR.complete()callback方法从jQuery 1.8开始不推荐使用。 要准备好代码以便最终删除它们,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。

这里是一个使用promise界面的现代化解决scheme

 $.ajax({url: "...", cache: false}).done(function( data ) { // data contains result }).fail(function(err){ // error });