Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 12520|Отговор: 2

[Jquery] [Включи] към jQuery.getJSON кеширащ проблем

[Копирай линк]
Публикувано в 5.09.2015 г. 10:21:58 ч. | | |
методът getJson на jquery чете същата заявка директно от кеша след първата заявка към сървъра за получаване на върнатите данни и вече не иска базата данни.

Ето как да го оправите:

1 Направете URL адреса различен за всяко обаждане
Метод: Добавете произволно число към параметъра.
Пример 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
Пример 2:
"xxx.aspx?randID="+Math.random
Пример 3:
"xxx.aspx?randID="+ escape(new Date())
2 Настройте кеша на False
$.ajax некеширана версия:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
аларм (msg);
}
});
3. Включете следното твърдение в горната част на labels.html файла:

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

<META HTTP-EQUIV="Изтича" СЪДЪРЖАНИЕ="-1">
4. Функцията за зареждане може не само да извиква HTML, но и скрипт, като labels.php, можете да използвате заглавната функция в php файла:

<?php

header ("Cache-Control: без кеш, трябва да превалидират");

?>
5 Използвай метод post вместо get.
Когато използвате метода Post, трябва да обърнете внимание към:
Задайте Context-Type на заглавието application/x-www-form-urlencode, за да гарантирате, че сървърът знае, че в обекта има параметрични променливи. Обикновено се използва SetRequestHeader ("Context-Type","application/x-www- form-urlencoded) на обекта XmlHttpRequest; ")。 Пример:

xmlHttp.setRequestHeader ("Content-Type","application/x-www-form-urlencoded");
Параметърът е двойка ключ-стойност, съответстваща на името/стойността, и всяка двойка стойности е разделена с > знак. Например, var name=abc&sex=man&age=18, обърнете внимание на var name=update.php?

abc&sex=man&age=18 и var name=?abc&sex=man&age=18 са написани неправилно;
Аргументът се изпраща чрез метода Send, напр. xmlHttp.send(name); Ако е метод за получаване, директно xmlHttp.send(null);

Параметърът за заявка от страна на сървъра прави разлика между Get и Post. Ако това е методът get, тогава $username = $_GET["username"]; Ако е метод за публикуване, тогава $username = $_POST["потребителско име"];
6 Добавете заглавие ("Cache-Control: no-cache, must-reva lidate") от страна на сървъра;
7 Добавете xmlHttpRequest.setRequestHeader ("If-Modified-Since","0") преди ajax да изпрати заявката;
8 Добавете xmlHttpRequest.setRequestHeader ("Cache-Control", "no-cache") преди ajax да изпрати заявката;




Предишен:c# Преобразуване \u64CD\u4F5C\u6210\u529F на китайски "Операция успешна"
Следващ:Валидиране на jQuery html5Валидиране на плъгин базиран на HTML5 форми
 Хазяин| Публикувано в 5.09.2015 г. 10:23:09 ч. |
url?username=test&aaa= Math.random()
 Хазяин| Публикувано в 5.09.2015 г. 10:24:24 ч. |
$.getJson метод Когато една и съща страница се заявява многократно, само данните се зареждат от кеша и URL адресът трябва да бъде следван от динамични параметри всеки път при презареждане
$.getJson('a.ashx?t='+new Date() ,'{a:b}',fun.... )
Промяната на параметрите в списъка с параметри е невалидна.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = нов Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Това е свързано с кеширащия механизъм на браузъра, а също така можете да настроите страницата да не кешира, така че този параметър да не се използва.
obj.src='rand.action?d='+timenow;
}
<img id='rand' src='rand.action?t=<%=new Date().getTime() %>' onclick='changeValidateCode(this)' title='Не виждаш ясно? Смени една! ' ширина='50' височина='22'/>
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com