Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 12520|Odgovoriti: 2

[Jquery] [Obrat] na jQuery.getJSON problem predpomnjenja

[Kopiraj povezavo]
Objavljeno na 5. 09. 2015 10:21:58 | | |
jqueryjeva metoda getJson prebere isto zahtevo neposredno iz predpomnilnika po prvi zahtevi strežniku za pridobitev vrnjenih podatkov in ne zahteva več baze podatkov.

Tukaj je, kako to popraviti:

1 Naredite URL drugačen za vsak klic
Metoda: Dodajte naključno število v parameter.
Primer 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
Primer 2:
"xxx.aspx?randID="+Math.random
Primer 3:
"xxx.aspx?randID="+ escape(new Date())
2 Nastavi predpomnilnik na False
$.ajax nepredpomnjena različica:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
opozorilo(msg);
}
});
3. Na vrh labels.html datoteke vključite naslednjo izjavo:

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

<META HTTP-EQUIV="Poteče" VSEBINA="-1">
4. Funkcija nalaganja ne more klicati le HTML, ampak tudi skriptirati, kot je labels.php, lahko uporabite funkcijo glave v php datoteki:

<?php

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

?>
5 Uporabi metodo post namesto get.
Pri uporabi metode Post morate biti pozorni na:
Nastavite Context-Type glave na application/x-www-form-urlencode, da strežnik ve, da so v entiteti spremenljivke parametrov. Običajno uporabite SetRequestHeader("Context-Type","application/x-www- form-urlencoded) objekta XmlHttpRequest; ")。 Primer:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Parameter je par ključ-vrednost, ki ustreza imenu/vrednosti, vsak par vrednosti pa je ločen z > znakom. Na primer, var name=abc&sex=man&age=18, bodite pozorni na var name=update.php?

abc&sex=man&age=18 in var name=?abc&sex=man&age=18 sta napačno zapisani;
Argument se pošlje v metodi Seend, npr. xmlHttp.send(ime); Če gre za get metodo, neposredno xmlHttp.send(null);

Parameter zahteve na strežniški strani razlikuje med Get in Post. Če je to metoda get, potem je $username = $_GET["uporabniško ime"]; Če gre za metodo objave, potem $username = $_POST["uporabniško ime"];
6 Dodajte glavo ("Cache-Control: no-cache, must-reva lidate") na strežniški strani;
7 Dodaj xmlHttpRequest.setRequestHeader("If-Modified-Since","0") preden ajax pošlje zahtevo;
8 Dodajte xmlHttpRequest.setRequestHeader("Cache-Control","no-cache") preden ajax pošlje zahtevo;




Prejšnji:c# Pretvorba \u64CD\u4F5C\u6210\u529F v kitajščino "Operacija uspešna"
Naslednji:Vtičnik Validate jQuery html5Validate na podlagi HTML5 obrazcev
 Najemodajalec| Objavljeno na 5. 09. 2015 10:23:09 |
url?username=test&aaa= Math.random()
 Najemodajalec| Objavljeno na 5. 09. 2015 10:24:24 |
Metoda $.getJson Ko se ista stran zahteva večkrat, se iz predpomnilnika naložijo le podatki, URL pa morajo ob vsakem ponovnem nalaganju spremljati dinamični parametri
$.getJson('a.ashx?t='+nov zmenek() ,'{a:b}', zabava.... )
Spreminjanje parametrov v seznamu parametrov je neveljavno.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = novi Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
To je povezano z mehanizmom predpomnjenja brskalnika, lahko pa tudi nastavite stran, da ne predpomni, tako da se ta parameter ne uporablja.
obj.src='rand.action?d='+timeNow;
}
<img id='rand' src='rand.action?t=<%=new Date().getTime() %>' onclick='changeValidateCode(this)' title='Ne vidiš jasno? Zamenjaj eno! ' širina='50' višina='22'/>
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com