Cómo configurar caché: falso en jQuery.get llamada

jQuery.get() es una abreviatura de jQuery.ajax() con una llamada a get. Pero cuando configuro cache:false en los datos de la llamada .get() , lo que se envía al servidor es un parámetro llamado caché con un valor de falso. Si bien mi intención es enviar una marca de tiempo con los datos al servidor para evitar el almacenamiento en caché, que es lo que sucede si uso cache: false en jQuery.ajax de datos. ¿Cómo puedo lograr esto sin reescribir mis llamadas jQuery.get a jQuery.ajax llamadas o usando

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

actualización: gracias a todos por las respuestas. Estás todo correcto. Sin embargo, esperaba que hubiera una forma de que la llamada de get supiera que no desea caché, o envíe ese valor al .ajax subyacente () para que sepa qué hacer con él.

I a. buscando una cuarta vía además de las tres formas que se han identificado hasta ahora:

  1. Haciéndolo globalmente a través de ajaxSetup

  2. Usar una llamada .ajax en lugar de una llamada .get

  3. Hágalo manualmente agregando un nuevo parámetro que contenga una marca de tiempo a su llamada .get.

Solo pensé que esta capacidad debería integrarse en la llamada .get.

Para mí, la forma correcta de hacerlo sería los que figuran en la lista. Ya sea ajax o ajaxSetup . Si realmente quieres usar get y no usar ajaxSetup entonces puedes crear tu propio parámetro y darle el valor de la fecha / hora actual.

Sin embargo, cuestionaría sus motivos para no utilizar uno de los otros métodos.

Agregue el parámetro usted mismo.

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

A partir de jQuery 3.0, ahora puede hacer esto:

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

Creo que debes usar el método AJAX que te permite desactivar el almacenamiento en caché:

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

Según la documentación de JQuery, .get() solo toma la url , los data (contenido), el tipo de data y la callback correcta como sus parámetros. Lo que realmente estás buscando hacer aquí es modificar el objeto jqXHR antes de que se envíe. Con .ajax() , esto se hace con el método beforeSend() . Pero como .get() es un atajo, no lo permite.

Sin embargo, debería ser relativamente fácil cambiar sus llamadas .ajax() llamadas .get() . Después de todo, .get() es solo un subconjunto de .ajax() , por lo que probablemente pueda usar todos los valores predeterminados para .ajax() (excepto, por supuesto, para beforeSend() ).

Editar:

:: Mira la respuesta de Jivings ::

Ah, sí, se olvidó del parámetro de cache ! Mientras que beforeSend() es útil para agregar otros encabezados, el parámetro de cache incorporado es mucho más simple aquí.

Establecer caché: falso en la llamada jQuery.get usando el método de abajo

use la nueva Date().getTime(), que evitará colisiones a menos que tenga varias solicitudes en el mismo milisegundo.

O

Lo siguiente evitará que todas las futuras solicitudes AJAX sean almacenadas en caché, independientemente del método jQuery que use ($ .get, $ .ajax, etc.)

 $.ajaxSetup({ cache: false }); 

Estoy muy tarde en el juego, pero esto podría ayudar a otros. Llegué al mismo problema con $ .get y no quería apagar el almacenamiento en caché ciegamente y no me gustó el parche de la marca de tiempo. Entonces, después de investigar un poco, descubrí que simplemente puede usar $ .post en lugar de $ .get que NO usa el almacenamiento en caché. Simple como eso. 🙂

Tenga en cuenta que la syntax de callback está en desuso :

Aviso de desaprobación

Los métodos de callback jqXHR.success (), jqXHR.error () y jqXHR.complete () introducidos en jQuery 1.5 están en desuso a partir de jQuery 1.8. Para preparar su código para su eventual eliminación, use jqXHR.done (), jqXHR.fail () y jqXHR.always () en su lugar.

Aquí una solución modernizada que usa la interfaz promise

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