Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 12520|Répondre: 2

[Jquery] [Tourner] vers jQuery.getJSON problème de mise en cache

[Copié le lien]
Publié sur 05/09/2015 10:21:58 | | |
La méthode getJson de jquery lit la même requête directement depuis le cache après la première requête au serveur pour obtenir les données retournées, et ne demande plus la base de données.

Voici comment résoudre cela :

1 Rendre l’URL différente pour chaque appel
Méthode : Ajouter un nombre aléatoire au paramètre.
Exemple 1 :
jQuery.getJSON("$ !{ Racine}/a/a/s.ashx »,{"ID » :id,"Nom » :nom,"Chemin »:p ath,random :Math.random()},fonction(responseText){}
Exemple 2 :
« xxx.aspx ?randID="+Math.random
Exemple 3 :
« xxx.aspx ?randID="+ escape(nouvelle date())
2 Définir le cache sur Faux
Version non mise en cache de $.ajax :
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
alerte (msg) ;
}
});
3. Incluez l’instruction suivante en haut du fichier labels.html :

<META HTTP-EQUIV="Pragma » CONTENT="no-cache">

<META HTTP-EQUIV="Expires » CONTENT= »-1">
4. La fonction de chargement peut non seulement appeler du HTML, mais aussi un script, comme labels.php, vous pouvez utiliser la fonction d’en-tête dans le fichier php :

< ?php

en-tête (« Cache-Control : no-cache, must-revalidate » ) ;

?>
5 Utilisez la méthode post au lieu de la méthode « get ».
Lorsque vous utilisez la méthode de publication, vous devez prêter attention à :
Réglez le type de contexte de l’en-tête sur application/x-www-form-urlencode pour s’assurer que le serveur sait qu’il y a des variables de paramètres dans l’entité. On utilise généralement l’en-tête SetRequest(« Context-Type »,"application/x-www- form-urlencoded) de l’objet XmlHttpRequest ; ")。 Exemple :

xmlHttp.setRequestHeader(« Content-Type »,"application/x-www-form-urlencoded ») ;
Le paramètre est une paire clé-valeur correspondant au nom/valeur, et chaque paire de valeurs est séparée par un signe >. Par exemple, var name=abc&sex=man&age=18, faites attention à la var name=update.php ?

abc&sex=homme&âge=18 et nom de la variété= ?abc&sex=homme&âge=18 sont mal écrits ;
L’argument est envoyé dans la méthode Send, par exemple xmlHttp.send(name) ; Si c’est une méthode get, directement xmlHttp.send(null) ;

Le paramètre de requête côté serveur distingue Obtenir et Post. Si c’est la méthode get, alors $username = $_GET[« username »] ; Si c’est une méthode post, alors $username = $_POST[« nom d’utilisateur »] ;
6 Ajouter un en-tête (« Cache-Control : no-cache, must-reva lidate ») côté serveur ;
7 Ajouter xmlHttpRequest.setRequestHeader(« If-Modified-Since « ,"0 ») avant qu’ajax n’envoie la requête ;
8 Ajouter xmlHttpRequest.setRequestHeader (« Cache-Control », « no-cache ») avant qu’ajax n’envoie la requête ;




Précédent:c# Convertir \u64CD\u4F5C\u6210\u529F en chinois « Opération réussie »
Prochain:Validez le plugin jQuery html5Validate basé sur des formulaires HTML5
 Propriétaire| Publié sur 05/09/2015 10:23:09 |
url ?username=test&aaa= Math.random()
 Propriétaire| Publié sur 05/09/2015 10:24:24 |
Méthode $.getJson Lorsque la même page est demandée à plusieurs reprises, seules les données sont chargées depuis le cache, et l’URL doit être suivie de paramètres dynamiques à chaque rechargement
$.getJson('a.ashx ?t='+nouvelle date() ,'{a :b}',fun.... )
Changer les paramètres dans la liste des paramètres est invalide.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = nouvelle Date ().getTime() ;
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Cela est lié au mécanisme de mise en cache du navigateur, et vous pouvez aussi définir la page pour qu’elle ne mette pas en cache, afin que ce paramètre ne soit pas utilisé.
obj.src='rand.action ?d='+timenow ;
}
<img id='rand' src='rand.action ?t=< %=new Date().getTime() %>' onclick='changeValidateCode(this)' title='Impossible de voir clairement ? Change un ! ' largeur='50' de hauteur='22'/>
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com