Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 12520|Yanıt: 2

[Jırlama] [Dön] jQuery.getJSON önbellek problemine

[Bağlantıyı kopyala]
Yayınlandı 5.09.2015 10:21:58 | | |
jquery'nin getJson yöntemi, geri dönen veriyi almak için sunucuya ilk istekten sonra aynı isteği doğrudan önbellekten okur ve artık veritabanını talep etmez.

İşte nasıl düzeltileceği:

1 Her çağrı için URL'yi farklı yapın
Yöntem: Parametreye rastgele bir sayı ekleyin.
Örnek 1:
jQuery.getJSON("$!{ Kök}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
Örnek 2:
"xxx.aspx?randID="+Math.random
Örnek 3:
"xxx.aspx?randID="+ escape(new Date())
2 Önbelleği Yanlış olarak ayarla
$.ajax önbelleksiz sürüm:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
alert(mesaj);
}
});
3. labels.html dosyasının üstüne aşağıdaki ifadeyi ekleyin:

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

<META HTTP-EQUIV="Expires" CONTENT="-1">
4. Yükleme fonksiyonu sadece HTML'yi değil, aynı zamanda script de çağırabilir, örneğin labels.php, php dosyasında başlık fonksiyonunu kullanabilirsiniz:

<?php

başlığı ("Önbellek-Kontrol: önbellek yok, yeniden doğrulamalı");

?>
5 Get yöntemi yerine post kullanın.
Post yöntemini kullanırken şunlara dikkat etmelisiniz:
Sunucunun varlıkta parametre değişkenleri olduğunu bilmesini sağlamak için başlığın Context-Type özelliğini application/x-www-form-urlencode olarak ayarlayın. Genellikle XmlHttpRequest nesnesinin SetRequestHeader("Context-Type","application/x-www- form-urlencoded) dosyasını kullanır; ")。 Örnek:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Parametre, isim/değere karşılık gelen bir anahtar-değer çiftidir ve her değer çifti > işaretiyle ayrılır. Örneğin, var name=abc&sex=man&age=18, var name=update.php'ye dikkat edin?

abc&sex=adam&yaş=18 ve var adı=?abc&sex=adam&yaş=18 yanlış yazılmıştır;
Argüman, Send yöntemiyle gönderilir, örneğin xmlHttp.send(name); Eğer bu bir get yöntemiyse, doğrudan xmlHttp.send(null);

Sunucu tarafı istek parametresi Al ile Post arasındaki ayrımı yapar. Eğer get yöntemi ise, $username = $_GET["kullanıcı adı"]; Eğer bu bir gönderi yöntemiyse, $username = $_POST["kullanıcı adı"];
6 Sunucu tarafına başlık ("Cache-Control: no-cache, must-reva lidate") ekleyin;
7 ajax isteği göndermeden önce xmlHttpRequest.setRequestHeader("If-Modified-Since","0") ekleyin;
8 Ajax isteği göndermeden önce xmlHttpRequest.setRequestHeader("Cache-Control","no-cache") ekleyin;




Önceki:c# \u64CD\u4F5C\u6210\u529F dilini Çince'ye dönüştür "Operasyon Başarılı"
Önümüzdeki:Validate jQuery html5Validate HTML5 formlarına dayalı eklentiyi Validate
 Ev sahibi| Yayınlandı 5.09.2015 10:23:09 |
url?username=test&aaa= Math.random()
 Ev sahibi| Yayınlandı 5.09.2015 10:24:24 |
$.getJson yöntemi Aynı sayfa tekrar tekrar istendiğinde, önbellekten yalnızca veri yüklenir ve URL her yeniden yüklendiğinde dinamik parametrelerle takip edilmelidir
$.getJson('a.ashx?t='+new Date() ,'{a:b}',fun.... )
Parametre listesinde parametreleri değiştirmek geçersizdir.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = yeni Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Bu, tarayıcının önbellekleme mekanizmasıyla ilgilidir ve ayrıca sayfayı önbelleksiz olarak ayarlayabilirsiniz, böylece bu parametre kullanılmaz.
obj.src='rand.action?d='+timenow;
}
<img id='rand' src='rand.action?t=<%=new Date().getTime() %>' onclick='changeValidateCode(this)' title='Net göremiyor musun? Birini değiştir! ' genişlik='50' yükseklik='22'/>
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com