Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 12520|Antwoord: 2

[Jquery] [Draai] naar jQuery.getJSON cachingprobleem

[Link kopiëren]
Geplaatst op 05-09-2015 10:21:58 | | |
jquery's getJson-methode leest hetzelfde verzoek direct uit de cache na het eerste verzoek aan de server om de teruggegeven gegevens te verkrijgen, en vraagt niet langer naar de database.

Zo los je het op:

1 Maak de URL verschillend voor elke oproep
Methode: Voeg een willekeurig getal toe aan de parameter.
Voorbeeld 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":naam,"Path":p ath,random:Math.random()},function(responseText){}
Voorbeeld 2:
"xxx.aspx?randID="+Math.random
Voorbeeld 3:
"xxx.aspx?randID="+ ontsnappen(nieuwe datum())
2 Zet cache op False
$.ajax ongecachede versie:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
alert(msg);
}
});
3. Voeg de volgende verklaring bovenaan het labels.html-bestand op:

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

<META HTTP-EQUIV="Expires" CONTENT="-1">
4. De load-functie kan niet alleen HTML aanroepen, maar ook scripts, zoals labels.php; je kunt de headerfunctie in het php-bestand gebruiken:

<?php

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

?>
5 Gebruik post in plaats van get methode.
Bij het gebruik van de Post-methode moet je letten op:
Stel het Context-Type van de header in op application/x-www-form-urlencode om ervoor te zorgen dat de server weet dat er parametervariabelen in de entiteit zijn. Gebruikmaken meestal de SetRequestHeader ("Context-Type","application/x-www- form-urlencoded) van het XmlHttpRequest-object; ")。 Voorbeeld:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
De parameter is een sleutel-waardepaar dat overeenkomt met de naam/waarde, en elk paar waarden wordt gescheiden door een >-teken. Bijvoorbeeld, var name=abc&sex=man&age=18, let op var name=update.php?

abc&sex=man&age=18 en var name=?abc&sex=man&age=18 zijn verkeerd geschreven;
Het argument wordt verzonden in de Verzendmethode, bijvoorbeeld xmlHttp.send(name); Als het een get-methode is, direct xmlHttp.send(null);

De server-side requestparameter maakt onderscheid tussen Get en Post. Als het de get-methode is, dan $username = $_GET["gebruikersnaam"]; Als het een postmethode is, dan $username = $_POST["gebruikersnaam"];
6 Toevoegen van header ("Cache-Control: no-cache, must-reva lidate") aan de serverzijde;
7 Voeg xmlHttpRequest.setRequestHeader ("If-Modified-Since","0") toe voordat ajax het verzoek verstuurt;
8 Voeg xmlHttpRequest.setRequestHeader ("Cache-Control","no-cache") toe voordat ajax het verzoek verstuurt;




Vorig:c# Converteer \u64CD\u4F5C\u6210\u529F naar Chinese "Operatie Succesvol"
Volgend:Validate jQuery html5Validate-plugin gebaseerd op HTML5-formulieren
 Huisbaas| Geplaatst op 05-09-2015 10:23:09 |
url?username=test&aaa= Math.random()
 Huisbaas| Geplaatst op 05-09-2015 10:24:24 |
$.getJson-methode Wanneer dezelfde pagina herhaaldelijk wordt opgevraagd, wordt alleen de data uit de cache geladen, en moet de URL elke keer dat deze wordt herladen worden gevolgd door dynamische parameters
$.getJson('a.ashx?t='+nieuwe Date() ,'{a:b}',fun.... )
Het wijzigen van parameters in de parameterlijst is ongeldig.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = nieuwe Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Dit hangt samen met het cachingmechanisme van de browser, en je kunt de pagina ook instellen om niet te cachen, zodat deze parameter niet wordt gebruikt.
obj.src='rand.action?d='+timenow;
}
<img id='rand' src='rand.action?t=<%=nieuwe Date().getTime() %>' onclick='changeValidateCode(this)' titel='Niet duidelijk zien? Verander er één! ' breedte='50' hoogte='22'/>
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com