Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 12520|Ответ: 2

[Jquery] [Переключись] на jQuery.getJSON кэшированную задачу

[Скопировать ссылку]
Опубликовано 05.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(новая дата())
2 Установить кэш в False
$.ajax некэшированная версия:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
Alert(msg);
}
});
3. Включите следующее утверждение в верхнюю часть файла labels.html:

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

<META HTTP-EQUIV="Истекает" КОНТЕНТ="-1">
4. Функция загрузки может вызывать не только HTML, но и скрипт, например labels.php, вы можете использовать функцию заголовка в php-файле:

<?php

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

?>
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); Если это метод get, напрямую 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
 Хозяин| Опубликовано 05.09.2015 10:23:09 |
url?username=test&aaa= Math.random()
 Хозяин| Опубликовано 05.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