Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 12520|Odpověď: 2

[Jquery] [Otočit] na jQuery.getJSON problém s cachováním

[Kopírovat odkaz]
Zveřejněno 05.09.2015 10:21:58 | | |
metoda jquery getJson čte stejný požadavek přímo z cache po prvním požadavku na server za účelem získání vrácených dat a již nepožaduje databázi.

Tady je, jak to opravit:

1 Nastavte URL odlišnou pro každý hovor
Metoda: Přidejte náhodné číslo do parametru.
Příklad 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
Příklad 2:
"xxx.aspx?randID="+Math.random
Příklad 3:
"xxx.aspx?randID="+ escape(new Date())
2 Nastavit cache na False
$.ajax uncacheovaná verze:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
upozornění(msg);
}
});
3. Zahrňte následující tvrzení na začátek labels.html souboru:

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

<META HTTP-EQUIV="Expires" CONTENT="-1">
4. Funkce načítaní může nejen volat HTML, ale také skriptovat, například labels.php, můžete použít hlavičku v souboru PHP:

<?php

hlavičky ("Cache-Control: no-cache, must-revalidate");

?>
5 Používejte metodu post místo get.
Při používání metody Post je třeba věnovat pozornost:
Nastavte kontextový typ hlavičky na application/x-www-form-urlencode, aby server věděl, že v entitě jsou proměnné parametrů. Obvykle se používá SetRequestHeader("Context-Type","application/x-www- form-urlencoded) objektu XmlHttpRequest; ")。 Příklad:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Parametr je pár klíč-hodnota odpovídající názvu/hodnotě a každá dvojice hodnot je oddělena > znaménkem. Například var name=abc&sex=muž&age=18, věnujte pozornost var name=update.php?

abc&sex=muž&věk=18 a var jméno=?abc&sex=muž&věk=18 jsou napsány nesprávně;
Argument je odeslán metodou Send, např. xmlHttp.send(name); Pokud je to get metoda, přímo xmlHttp.send(null);

Parametr požadavku na straně serveru rozlišuje mezi Get a Post. Pokud je to metoda get, pak $username = $_GET["username"]; Pokud je to metoda příspěvků, pak $username = $_POST["uživatelské jméno"];
6 Přidat hlavičku ("Cache-Control: no-cache, must-reva lidate") na straně serveru;
7 Přidat xmlHttpRequest.setRequestHeader("If-Modified-Since ","0") před odesláním požadavku od Ajaxu;
8 Přidat xmlHttpRequest.setRequestHeader("Cache-Control","no-cache") před odesláním požadavku od ajaxu;




Předchozí:c# Převod \u64CD\u4F5C\u6210\u529F do čínštiny "Operace úspěšná"
Další:Validate jQuery html5Validate plugin založený na HTML5 formulářích
 Pronajímatel| Zveřejněno 05.09.2015 10:23:09 |
url?username=test&aaa= Math.random()
 Pronajímatel| Zveřejněno 05.09.2015 10:24:24 |
metoda $.getJson Když je opakovaně požadována stejná stránka, z cache se načtou pouze data a URL musí být následována dynamickými parametry při každém opětovném načítání
$.getJson('a.ashx?t='+nové rande() ,'{a:b}', zábava.... )
Změna parametrů v seznamu parametrů je neplatná.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = nový Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
To souvisí s mechanismem cache prohlížeče a můžete také nastavit, aby stránka nebyla cache, takže tento parametr nebude použit.
Obj.src='rand.action?d='+TimeNow;
}
<img id='rand' src='rand.action?t=<%=new Date().getTime() %>' onclick='changeValidateCode(this)' title='Nevidím jasně? Změň jednu! ' šířka='50' výška='22'/>
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com