Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 12520|Răspunde: 2

[Jquery] [Întoarce] la jQuery.getJSON problemă de cache

[Copiază linkul]
Postat pe 05.09.2015 10:21:58 | | |
Metoda getJson a jquery citește aceeași cerere direct din cache după prima cerere către server pentru a obține datele returnate și nu mai solicită baza de date.

Iată cum se rezolvă:

1 Faceți URL-ul diferit pentru fiecare apel
Metodă: Adaugă un număr aleatoriu la parametru.
Exemplul 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
Exemplul 2:
"xxx.aspx?randID="+Math.random
Exemplul 3:
"xxx.aspx?randID="+ escape(new Date())
2 Setează cache-ul pe False
Versiunea necacheată a $.ajax:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
alertă (MSG);
}
});
3. Include următoarea afirmație în partea de sus a fișierului labels.html:

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

<META HTTP-EQUIV="Expires" CONTENT="-1">
4. Funcția de încărcare nu poate doar să apeleze HTML, ci și script, cum ar fi labels.php, poți folosi funcția de antet în fișierul php:

<?php

antet("Cache-Control: no-cache, must-revalidate");

?>
5 Folosește metoda post în loc de a obține.
Când folosești metoda Postării, trebuie să fii atent la:
Setează Context-Type al antetului pe application/x-www-form-urlencode pentru a se asigura că serverul știe că există variabile de parametri în entitate. De obicei se folosește SetRequestHeader("Context-Type","application/x-www- form-urlencoded) al obiectului XmlHttpRequest; ")。 Exemplu:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Parametrul este o pereche cheie-valoare corespunzătoare numelui/valorii, iar fiecare pereche de valori este separată printr-un semn >. De exemplu, var name=abc&sex=man&age=18, fii atent la var name=update.php?

abc&sex=bărbat&vârstă=18 și var name=?abc&sex=bărbat&vârstă=18 sunt scrise incorect;
Argumentul este trimis în metoda Send, de exemplu xmlHttp.send(name); Dacă este o metodă get, direct, xmlHttp.send(null);

Parametrul de cerere pe partea de server face distincție între Get și Post. Dacă este metoda get, atunci $username = $_GET["username"]; Dacă este o metodă post, atunci $username = $_POST["username"];
6 Adaugă antet ("Cache-Control: no-cache, must-reva lidate") pe partea de server;
7 Adaugă xmlHttpRequest.setRequestHeader("If-Modified-Since","0") înainte ca ajax să trimită cererea;
8 Adaugă xmlHttpRequest.setRequestHeader("Cache-Control","no-cache") înainte ca ajax să trimită cererea;




Precedent:c# Convertește \u64CD\u4F5C\u6210\u529F în chineză "Operațiunea Reușită"
Următor:Validează pluginul jQuery html5Validate bazat pe formulare HTML5
 Proprietarul| Postat pe 05.09.2015 10:23:09 |
url?username=test&aaa= Math.random()
 Proprietarul| Postat pe 05.09.2015 10:24:24 |
Metoda $.getJson Când aceeași pagină este solicitată în mod repetat, doar datele sunt încărcate din cache, iar URL-ul trebuie urmat de parametri dinamici de fiecare dată când este reîncărcat
$.getJson('a.ashx?t='+data nouă() ,'{a:b}',distr.... )
Schimbarea parametrilor din lista parametrilor este invalidă.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = nouă Data().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Acest lucru este legat de mecanismul de cache al browserului, iar de asemenea poți seta pagina să nu fie stocată în cache, astfel încât acest parametru să nu fie folosit.
obj.src='rand.action?d='+timenow;
}
<img id='rand' src='rand.action?t=<%=new Date().getTime() %>' onclick='changeValidateCode(this)' titlu='Nu poți vedea clar? Schimbă unul! ' lățime='50' înălțime='22'/>
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com