Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 12520|Svar: 2

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

[Kopier link]
Opslået på 05/09/2015 10.21.58 | | |
jquerys getJson-metode læser den samme anmodning direkte fra cachen efter den første anmodning til serveren for at få de returnerede data og anmoder ikke længere databasen.

Sådan løser du det:

1 Lav URL'en forskellig for hvert kald
Metode: Tilføj et tilfældigt tal 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="+ escape(ny dato())
2 Sæt cache til falsk
$.ajax ucachet version:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
alert(msg);
}
});
3. Inkluder følgende udsagn øverst i labels.html-filen:

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

<META HTTP-EQUIV="Udløber" INDHOLD="-1">
4. Load-funktionen kan ikke kun kalde HTML, men også scripts, såsom labels.php, du kan bruge header-funktionen i php-filen:

<?php

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

?>
5 Brug post-metoden i stedet for 'get'.
Når du bruger Post-metoden, skal du være opmærksom på:
Sæt headerens Context-Type til application/x-www-form-urlencode for at sikre, at serveren ved, at der er parametervariabler i entiteten. Brug normalt SetRequestHeader("Context-Type","application/x-www- form-urlencoded) af XmlHttpRequest-objektet; ")。 Eksempel:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Parameteren er et nøgle-værdi-par, der svarer til navnet/værdien, og hvert par værdier adskilles af et >-tegn. For eksempel, var name=abc&sex=man&age=18, læg mærke til var name=update.php?

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

Server-side anmodningsparameteren skelner mellem Get og Post. Hvis det er get-metoden, så $username = $_GET["brugernavn"]; Hvis det er en postmetode, så $username = $_POST["brugernavn"];
6 Tilføj header ("Cache-Control: no-cache, must-reva lidate") på serversiden;
7 Tilføj xmlHttpRequest.setRequestHeader("If-Modified-Since","0") før ajax sender anmodningen;
8 Tilføj xmlHttpRequest.setRequestHeader ("Cache-Control","no-cache") før ajax sender anmodningen;




Tidligere:c# Konverter \u64CD\u4F5C\u6210\u529F til kinesisk "Operation Succesfuld"
Næste:Validate jQuery html5Validate-plugin baseret på HTML5-formularer
 Udlejer| Opslået på 05/09/2015 10.23.09 |
url?username=test&aaa= Math.random()
 Udlejer| Opslået på 05/09/2015 10.24.24 |
$.getJson-metoden Når den samme side anmodes gentagne gange, indlæses kun dataene fra cachen, og URL'en skal efterfølges af dynamiske parametre hver gang den genindlæses
$.getJson('a.ashx?t='+ny Date() ,'{a:b}',sjov.... )
Ændring af parametre i parameterlisten er ugyldig.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = ny Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Dette er relateret til browserens caching-mekanisme, og du kan også sætte siden til ikke at cache, så denne parameter ikke bruges.
obj.src='rand.action?d='+timenow;
}
<img id='rand' src='rand.action?t=<%=ny Date().getTime() %>' onclick='changeValidateCode(this)' titel='Kan ikke se tydeligt? Skift en! ' bredde='50' højde='22'/>
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com