Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 12520|Antwort: 2

[Jquery] [Umdrehen] zu jQuery.getJSON Caching-Problem

[Link kopieren]
Veröffentlicht am 05.09.2015 10:21:58 | | |
Die getJson-Methode von jquery liest dieselbe Anfrage direkt aus dem Cache nach der ersten Anfrage an den Server, um die zurückgegebenen Daten zu erhalten, und fordert die Datenbank nicht mehr an.

So beheben Sie das:

1 Mach die URL für jeden Aufruf unterschiedlich
Methode: Fügen Sie dem Parameter eine Zufallszahl hinzu.
Beispiel 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
Beispiel 2:
"xxx.aspx?randID="+Math.random
Beispiel 3:
"xxx.aspx?randID="+ Flucht(neues Datum())
2 Cache auf False setzen
$.ajax ungecachte Version:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
Alert(MSG);
}
});
3. Fügen Sie die folgende Aussage oben in der labels.html-Datei hinzu:

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

<META HTTP-EQUIV="Expires" CONTENT="-1">
4. Die Load-Funktion kann nicht nur HTML aufrufen, sondern auch ein Skript wie labels.php, du kannst die Header-Funktion in der php-Datei verwenden:

<?php

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

?>
5 Verwenden Sie die Post-Methode statt der Get-Methode.
Wenn Sie die Post-Methode verwenden, müssen Sie auf folgende Aufmerksamkeit achten:
Setzen Sie den Kontexttyp des Headers auf application/x-www-form-urlencode, um sicherzustellen, dass der Server weiß, dass es Parametervariablen in der Entität gibt. Verwenden Sie üblicherweise den SetRequestHeader ("Context-Type","application/x-www- form-urlencoded) des XmlHttpRequest-Objekts; ")。 Beispiel:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Der Parameter ist ein Schlüssel-Wert-Paar, das dem Namen/Wert entspricht, und jedes Wertepaar ist durch ein >-Zeichen getrennt. Zum Beispiel, var name=abc&sex=man&age=18, achte auf var name=update.php?

abc&sex=man&age=18 und var name=?abc&sex=man&age=18 sind falsch geschrieben;
Das Argument wird in der Send-Methode gesendet, z. B. xmlHttp.send(name); Handelt es sich um eine get-Methode, direkt xmlHttp.send(null);

Der serverseitige Anfrageparameter unterscheidet zwischen Get und Post. Wenn es die Get-Methode ist, dann $username = $_GET["Benutzername"]; Wenn es sich um eine Post-Methode handelt, dann $username = $_POST["username"];
6 Hinzufügen des Headers ("Cache-Control: no-cache, must-reva lidate") auf der Serverseite;
7 xmlHttpRequest.setRequestHeader("If-Modified-Since","0") hinzufügen, bevor ajax die Anfrage sendet;
8 xmlHttpRequest.setRequestHeader ("Cache-Control","no-cache") hinzufügen, bevor ajax die Anfrage sendet;




Vorhergehend:c# Konvertiere \u64CD\u4F5C\u6210\u529F in chinesische "Operation Erfolgreich"
Nächster:Validate jQuery html5Validate-Plugin basierend auf HTML5-Formularen
 Vermieter| Veröffentlicht am 05.09.2015 10:23:09 |
url?username=test&aaa= Math.random()
 Vermieter| Veröffentlicht am 05.09.2015 10:24:24 |
$.getJson-Methode Wenn dieselbe Seite wiederholt angefordert wird, werden nur die Daten aus dem Cache geladen, und die URL muss jedes Mal von dynamischen Parametern gefolgt werden, wenn sie neu geladen wird.
$.getJson('a.ashx?t='+new Date() ,'{a:b}',fun.... )
Das Ändern von Parametern in der Parameterliste ist ungültig.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = neuer Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Dies hängt mit dem Caching-Mechanismus des Browsers zusammen, und Sie können die Seite auch so einstellen, dass sie nicht cachet, sodass dieser Parameter nicht verwendet wird.
obj.src='rand.action?d='+timenow;
}
<img id='rand' src='rand.action?t=<%=neuer Date().getTime() %>' onclick='changeValidateCode(this)' titel='Nicht klar sehen? Wechsel einen! 'Breite='50' Höhe='22'/>
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com