Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 12520|Svar: 2

[Jquery] [Vänd] till jQuery.getJSON cacheproblem

[Kopiera länk]
Publicerad på 2015-09-05 10:21:58 | | |
jquerys getJson-metod läser samma förfrågan direkt från cachen efter den första förfrågan till servern för att få tillbaka den returnerade datan, och begär inte längre databasen.

Så här åtgärdar du det:

1 Gör URL:en olika för varje anrop
Metod: Lägg till ett slumptal till parametern.
Exempel 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
Exempel 2:
"xxx.aspx?randID="+Math.random
Exempel 3:
"xxx.aspx?randID="+ flykt(nytt datum())
2 Sätt cache till False
$.ajax ocachad version:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
alert(msg);
}
});
3. Inkludera följande uttalande högst upp i labels.html filen:

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

<META HTTP-EQUIV="Expires" CONTENT="-1">
4. Load-funktionen kan inte bara anropa HTML, utan även skript, såsom labels.php, du kan använda header-funktionen i php-filen:

<?php

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

?>
5 Använd postmetoden istället för get.
När du använder Post-metoden måste du vara uppmärksam på:
Ställ in headerns Context-Type till application/x-www-form-urlencode för att säkerställa att servern vet att det finns parametervariabler i entiteten. Brukar använda SetRequestHeader("Context-Type","application/x-www- form-urlencoded) för XmlHttpRequest-objektet; ")。 Exempel:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Parametern är ett nyckel-värde-par som motsvarar namnet/värdet, och varje par av värden separeras av ett >-tecken. Till exempel, var name=abc&sex=man&age=18, lägg märke till var name=update.php?

abc&sex=man&age=18 och var name=?abc&sex=man&age=18 är felaktigt skrivna;
Argumentet skickas i Send-metoden, t.ex. xmlHttp.send(name); Om det är en get-metod, direkt xmlHttp.send(null);

Serversidans begäranparameter skiljer mellan Get och Post. Om det är get-metoden, så $username = $_GET["username"]; Om det är en postmetod, så $username = $_POST["användarnamn"];
6 Lägg till header ("Cache-Control: no-cache, must-reva lidate") på serversidan;
7 Lägg till xmlHttpRequest.setRequestHeader("If-Modified-Since","0") innan ajax skickar förfrågan;
8 Lägg till xmlHttpRequest.setRequestHeader ("Cache-Control","no-cache") innan ajax skickar förfrågan;




Föregående:c# Konvertera \u64CD\u4F5C\u6210\u529F till kinesisk "Operation Lyckad"
Nästa:Validate jQuery html5Validate-plugin baserat på HTML5-formulär
 Hyresvärd| Publicerad på 2015-09-05 10:23:09 |
url?username=test&aaa= Math.random()
 Hyresvärd| Publicerad på 2015-09-05 10:24:24 |
$.getJson-metoden När samma sida efterfrågas upprepade gånger laddas endast data från cachen, och URL:en måste följas av dynamiska parametrar varje gång den laddas om
$.getJson('a.ashx?t='+ny Date() ,'{a:b}',fun.... )
Att ändra parametrar i parameterlistan är ogiltigt.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = ny Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Detta är relaterat till webbläsarens cachemekanism, och du kan också ställa in sidan att inte cache, så att denna parameter inte används.
obj.src='rand.action?d='+timenow;
}
<img id='rand' src='rand.action?t=<%=ny Date().getTime() %>' onclick='changeValidateCode(this)' titel='Kan inte se tydligt? Byt en! ' bredd='50' höjd='22'/>
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com