Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 12520|Svare: 2

[Jquery] [Snu] til jQuery.getJSON caching-problemet

[Kopier lenke]
Publisert på 05.09.2015 10:21:58 | | |
jquerys getJson-metode leser den samme forespørselen direkte fra cachen etter den første forespørselen til serveren for å hente de returnerte dataene, og forespør ikke lenger databasen.

Slik fikser du det:

1 Gjør URL-en forskjellig for hvert kall
Metode: Legg til et tilfeldig tall til parameteren.
Eksempel 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
Eksempel 2:
"xxx.aspx?randID="+Math.random
Eksempel 3:
"xxx.aspx?randID="+ flukt(ny dato())
2 Sett cache til falsk
$.ajax ubufret versjon:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
alert(msg);
}
});
3. Inkluder følgende uttalelse øverst i labels.html-filen:

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

<META HTTP-EQUIV="Utløper" INNHOLD="-1">
4. Lastefunksjonen kan ikke bare kalle HTML, men også skript, som labels.php, du kan bruke header-funksjonen i php-filen:

<?php

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

?>
5 Bruk post i stedet for get-metoden.
Når du bruker Post-metoden, må du være oppmerksom på:
Sett headerens Context-Type til application/x-www-form-urlencode for å sikre at serveren vet at det finnes parametervariabler i enheten. Vanligvis bruker jeg SetRequestHeader("Context-Type","application/x-www- form-urlencoded) til XmlHttpRequest-objektet; ")。 Eksempel:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Parameteren er et nøkkel-verdi-par som tilsvarer navnet/verdien, og hvert par av verdier er adskilt med et >-tegn. For eksempel, var name=abc&sex=man&age=18, legg merke til var name=update.php?

abc&sex=man&age=18 og var name=?abc&sex=man&age=18 er skrevet feil;
Argumentet sendes i Send-metoden, f.eks. xmlHttp.send(name); Hvis det er en get-metode, direkte xmlHttp.send(null);

Server-side forespørselsparameteren skiller mellom Get og Post. Hvis det er get-metoden, så $username = $_GET["brukernavn"]; Hvis det er en postmetode, så $username = $_POST["brukernavn"];
6 Legg til header ("Cache-Control: no-cache, must-reva lidate") på serversiden;
7 Legg til xmlHttpRequest.setRequestHeader("If-Modified-Since","0") før ajax sender forespørselen;
8 Legg til xmlHttpRequest.setRequestHeader ("Cache-Control","no-cache") før ajax sender forespørselen;




Foregående:c# Konverter \u64CD\u4F5C\u6210\u529F til kinesisk "Operasjon vellykket"
Neste:Validate jQuery html5Validate-plugin basert på HTML5-skjemaer
 Vert| Publisert på 05.09.2015 10:23:09 |
url?username=test&aaa= Math.random()
 Vert| Publisert på 05.09.2015 10:24:24 |
$.getJson-metoden Når den samme siden forespørres gjentatte ganger, lastes kun dataene fra cachen, og URL-en må følges av dynamiske parametere hver gang den lastes inn på nytt
$.getJson('a.ashx?t='+ny Date() ,'{a:b}',moro.... )
Endring av parametere i parameterlisten er ugyldig.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = ny Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Dette er relatert til nettleserens caching-mekanisme, og du kan også sette siden til ikke å cache, slik at denne parameteren ikke brukes.
obj.src='rand.action?d='+timenow;
}
<img id='rand' src='rand.action?t=<%=ny Date().getTime() %>' onclick='changeValidateCode(this)' tittel='Kan ikke se klart? Bytt én! ' bredde='50' høyde='22'/>
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com