How to set cache: false in jQuery.get call
jQuery.get()
is a shorthand for jQuery.ajax()
with a get call. But when I set cache:false
in the data of the .get()
call, what is sent to the server is a parameter called cache with a value of false. While my intention is to send a timestamp with the data to the server to prevent caching which is what happens if I use cache: false
in jQuery.ajax data. How do I accomplish this without rewriting my jQuery.get calls to jQuery.ajax calls or using
$.ajaxSetup({
// Disable caching of AJAX responses
cache: false
});
update: Thanks everyone for the answers. You are all correct. However, I was hoping that there was a way to let the get call know that you do not want to cache, or send that value to the underlying .ajax() so it would know what to do with it.
I a. looking for a fourth way other than the three ways that have been identified so far:
Doing it globally via ajaxSetup
Using a .ajax call instead of a .get call
Doing it manually by adding a new parameter holding a timestamp to your .get call.
I just thought that this capability should be built into the .get call.
Add the parameter yourself.
$.get(url,{ "_": $.now() }, function(rdata){
console.log(rdata);
});
As of jQuery 3.0, you can now do this:
$.get({
url: url,
cache: false
}).then(function(rdata){
console.log(rdata);
});
I think you have to use the AJAX method instead which allows you to turn caching off:
$.ajax({
url: "test.html",
data: 'foo',
success: function(){
alert('bar');
},
cache: false
});
To me, the correct way of doing it would be the ones listed. Either ajax
or ajaxSetup
. If you really want to use get
and not use ajaxSetup
then you could create your own parameter and give it the value of the the current date/time.
I would however question your motives in not using one of the other methods.