Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 12520|Odpoveď: 2

[Jquery] [Otoč] na problém cache v jQuery.getJSON

[Kopírovať odkaz]
Zverejnené 5. 9. 2015 10:21:58 | | |
Metóda getJson v jquery číta rovnakú požiadavku priamo z cache po prvej požiadavke na server na získanie vrátených dát a už nepožaduje databázu.

Tu je návod, ako to opraviť:

1 Urobte URL odlišnú pre každý hovor
Metóda: Pridaj náhodné číslo k parametru.
Príklad 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
Príklad 2:
"xxx.aspx?randID="+Math.random
Príklad 3:
"xxx.aspx?randID="+ escape(new Date())
2 Nastaviť cache na False
$.ajax necacheovaná verzia:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
Alert(MSG);
}
});
3. Zahrňte nasledujúce vyhlásenie na vrch labels.html súboru:

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

<META HTTP-EQUIV="Expires" CONTENT="-1">
4. Funkcia načítania môže nielen volať HTML, ale aj skriptovať, napríklad labels.php, môžete použiť hlavičku v php súbore:

<?php

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

?>
5 Používajte metódu post namiesto get.
Pri používaní metódy Post by ste mali venovať pozornosť:
Nastavte kontextový typ hlavičky na application/x-www-form-urlencode, aby server vedel, že v entite sú parametrické premenné. Zvyčajne sa používa SetRequestHeader("Context-Type","application/x-www- form-urlencoded) objektu XmlHttpRequest; ")。 Príklad:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Parameter je pár kľúč-hodnota zodpovedajúci názvu/hodnote a každá dvojica hodnôt je oddelená znamienkom >. Napríklad, var name=abc&sex=man&age=18, venujte pozornosť var name=update.php?

abc&sex=man&age=18 a var name=?abc&sex=man&age=18 sú napísané nesprávne;
Argument sa odosiela metódou Send, napr. xmlHttp.send(name); Ak ide o get metódu, priamo xmlHttp.send(null);

Parameter požiadaviek na strane servera rozlišuje medzi Get a Post. Ak je to metóda get, potom $username = $_GET["username"]; Ak ide o metódu príspevku, potom $username = $_POST["používateľské meno"];
6 Pridať hlavičku ("Cache-Control: no-cache, must-reva lidate") na strane servera;
7 Pridanie xmlHttpRequest.setRequestHeader("If-Modified-Because","0") predtým, než ajax odošle požiadavku;
8 Pridaj xmlHttpRequest.setRequestHeader("Cache-Control","no-cache") predtým, než ajax odošle požiadavku;




Predchádzajúci:c# Konvertovať \u64CD\u4F5C\u6210\u529F do čínštiny "Operácia úspešná"
Budúci:Validate jQuery html5Validate plugin založený na HTML5 formulároch
 Prenajímateľ| Zverejnené 5. 9. 2015 10:23:09 |
url?username=test&aaa= Math.random()
 Prenajímateľ| Zverejnené 5. 9. 2015 10:24:24 |
metóda $.getJson Keď je tá istá stránka opakovane žiadaná, z cache sa načítajú iba dáta a URL musí byť pri každom opätovnom načítaní nasledovaná dynamickými parametrami
$.getJson('a.ashx?t='+nové rande() ,'{a:b}', zábava.... )
Zmena parametrov v zozname parametrov je neplatná.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = nový Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Toto súvisí s mechanizmom cache prehliadača a môžete tiež nastaviť stránku, aby sa neukladala do vyrovnávacej pamäte, takže tento parameter sa nepoužíva.
Obj.src='rand.action?d='+TimeNow;
}
<img id='rand' src='rand.action?t=<%=new Date().getTime() %>' onclick='changeValidateCode(this)' title='Nevidím jasne? Zmeňte jednu! ' šírka='50' výška='22'/>
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com