Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 12520|Odpowiedź: 2

[Szarpanie] [Turn] do problemu z buforowaniem jQuery.getJSON

[Skopiuj link]
Opublikowano 05.09.2015 10:21:58 | | |
Metoda getJson w jquery odczytuje to samo żądanie bezpośrednio z pamięci podręcznej po pierwszym żądaniu do serwera w celu uzyskania zwróconych danych i nie żąda już bazy danych.

Oto jak to naprawić:

1 Ustal, by adres URL był inny dla każdego połączenia
Metoda: Dodaj losową liczbę do parametru.
Przykład 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
Przykład 2:
"xxx.aspx?randID="+Math.random
Przykład 3:
"xxx.aspx?randID="+ escape(new Date())
2 Ustaw pamięć podręczną na False
Wersja bez buforowania $.ajax:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
alert(msg);
}
});
3. Umieść następujące stwierdzenie na górze pliku labels.html:

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

<META HTTP-EQUIV="Wygasa" CONTENT="-1">
4. Funkcja ładowania może wywoływać nie tylko HTML, ale także skrypty, takie jak labels.php, możesz użyć funkcji nagłówka w pliku php:

<?php

nagłówka ("Cache-Control: no-cache, must-revalidate");

?>
5 Użyj metody post zamiast get.
Stosując metodę Post, musisz zwrócić uwagę na:
Ustaw Context Type nagłówka na application/x-www-form-urlencode, aby upewnić się, że serwer wie, że w encji znajdują się zmienne parametrów. Zazwyczaj używa się nagłówka SetRequest("Context-Type","application/x-www- form-urlencoded) obiektu XmlHttpRequest; ")。 Przykład:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Parametr jest parą klucz-wartość odpowiadającą nazwie/wartości, a każda para wartości jest oddzielona znakiem >. Na przykład, var name=abc&sex=man&age=18, zwróć uwagę na var name=update.php?

abc&sex=man&age=18 oraz var name=?abc&sex=man&age=18 są błędnie zapisane;
Argument jest wysyłany metodą Send, np. xmlHttp.send(name); Jeśli jest to metoda get, należy bezpośrednio xmlHttp.send(null);

Parametr żądania po stronie serwera rozróżnia Get i Post. Jeśli jest to metoda get, to $username = $_GET["username"]; Jeśli jest to metoda post, to $username = $_POST["username"];
6 Dodaj nagłówek ("Cache-Control: no-cache, must-reva lidate") po stronie serwera;
7 Dodaj xmlHttpRequest.setRequestHeader("If-Modified-Because","0") przed wysłaniem żądania przez Ajax;
8 Dodaj xmlHttpRequest.setRequestHeader("Cache-Control","no-cache") przed wysłaniem żądania przez Ajax;




Poprzedni:c# Przekonwertuj \u64CD\u4F5C\u6210\u529F na chiński "Operacja zakończyła się sukcesem"
Następny:Validate wtyczkę jQuery html5Validate opartą na formularzach HTML5
 Ziemianin| Opublikowano 05.09.2015 10:23:09 |
url?username=test&aaa= Math.random()
 Ziemianin| Opublikowano 05.09.2015 10:24:24 |
metoda $.getJson Gdy ta sama strona jest powtarzana, z pamięci podręcznej ładują się tylko dane, a URL musi być za każdym razem uzupełniony parametrami dynamicznymi
$.getJson('a.ashx?t='+nowa randka() ,'{a:b}', zabawa.... )
Zmiana parametrów w liście parametrów jest nieprawidłowa.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = new Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Jest to powiązane z mechanizmem buforowania przeglądarki, a także można ustawić stronę tak, aby nie buforowała, tak aby ten parametr nie był używany.
Obj.src='rand.action?d='+TimeNow;
}
<img id='rand' src='rand.action?t=<%=new Date().getTime() %>' onclick='changeValidateCode(this)' title='Nie widzę wyraźnie? Zmień jeden! ' szerokość='50' wysokość='22'/>
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com