74 votes

Comment définir le paramètre cache : false dans l'appel jQuery.get ?

jQuery.get() est un raccourci pour jQuery.ajax() avec un appel get. Mais quand je mets cache:false dans les données de la .get() ce qui est envoyé au serveur est un paramètre appelé cache avec une valeur de false. Bien que mon intention soit d'envoyer un horodatage avec les données au serveur pour éviter la mise en cache, ce qui se produit si j'utilise la fonction cache: false dans les données jQuery.ajax. Comment puis-je y parvenir sans réécrire mes appels jQuery.get en appels jQuery.ajax ou sans utiliser le logiciel

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

Mise à jour : Merci à tous pour les réponses. Vous avez tous raison. Cependant, j'espérais qu'il y avait un moyen de faire savoir à l'appel get que vous ne voulez pas mettre en cache, ou d'envoyer cette valeur à la fonction sous-jacente .ajax() afin qu'elle sache quoi en faire.

J'ai. cherché une quatrième voie autre que les trois voies qui ont été identifiées jusqu'à présent :

  1. Le faire de manière globale via ajaxSetup

  2. Utilisation d'un appel .ajax au lieu d'un appel .get

  3. Il faut le faire manuellement en ajoutant un nouveau paramètre contenant un horodatage à votre appel .get.

Je pensais juste que cette capacité devrait être intégrée dans l'appel .get.

3voto

mar10 Points 2617

Notez que la syntaxe du callback est déprécié :

Avis de dépréciation

Les méthodes de rappel jqXHR.success(), jqXHR.error() et jqXHR.complete() ont été introduites dans le système. introduites dans jQuery 1.5 sont obsolètes depuis jQuery 1.8. Pour préparer votre code à leur suppression éventuelle, utilisez jqXHR.done(), jqXHR.fail(), et jqXHR.always() à la place.

Voici une solution modernisée utilisant le promise interface

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

0voto

RitchieD Points 83

Je suis très en retard dans le jeu, mais cela pourrait aider d'autres personnes. J'ai rencontré le même problème avec $.get et je ne voulais pas désactiver aveuglément la mise en cache et je n'aimais pas le patch timestamp. Après quelques recherches, j'ai découvert que vous pouvez simplement utiliser $.post au lieu de $.get, ce qui n'utilise PAS la mise en cache. C'est aussi simple que cela :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X