Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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 = $_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