Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 12520|Jawab: 2

[Jpertanyaan] [Balik] ke masalah caching jQuery.getJSON

[Salin tautan]
Diposting pada 05/09/2015 10.21.58 | | |
Metode getJson jquery membaca permintaan yang sama langsung dari cache setelah permintaan pertama ke server untuk mendapatkan data yang dikembalikan, dan tidak lagi meminta database.

Berikut cara memperbaikinya:

1 Buat URL berbeda untuk setiap panggilan
Metode: Tambahkan angka acak ke parameter.
Contoh 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
Contoh 2:
"xxx.aspx?randID="+Math.random
Contoh 3:
"xxx.aspx?randID="+ escape(new Date())
2 Atur cache ke False
$.ajax versi yang tidak di-cache:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
Waspada (msg);
}
});
3. Sertakan pernyataan berikut di bagian atas file labels.html:

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

<META HTTP-EQUIV="kedaluwarsa" CONTENT="-1">
4. Fungsi beban tidak hanya dapat memanggil HTML, tetapi juga skrip, seperti labels.php, Anda dapat menggunakan fungsi header dalam file php:

<?php

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

?>
5 Gunakan metode posting alih-alih dapatkan.
Saat menggunakan metode Posting, Anda perlu memperhatikan:
Atur Context-Type header ke application/x-www-form-urlencode untuk memastikan bahwa server mengetahui bahwa ada variabel parameter dalam entitas. Biasanya menggunakan SetRequestHeader("Context-Type","application/x-www- form-urlencoded) dari objek XmlHttpRequest; ")。 Contoh:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Parameter adalah pasangan kunci-nilai yang sesuai dengan nama/nilai, dan setiap pasangan nilai dipisahkan oleh tanda >. Misalnya, var name=abc&sex=man&age=18, perhatikan var name=update.php?

abc&sex=man&age=18 dan var name=?abc&sex=man&age=18 ditulis dengan salah;
Argumen dikirim dalam metode Send, misalnya xmlHttp.send(name); Jika itu adalah metode get, langsung xmlHttp.send(null);

Parameter permintaan sisi server membedakan antara Get dan Post. Jika itu adalah metode get, maka $username = $_GET["username"]; Jika itu adalah metode posting, maka $username = $_POST["nama pengguna"];
6 Tambahkan header ("Cache-Control: no-cache, must-reva lidate") di sisi server;
7 Tambahkan xmlHttpRequest.setRequestHeader("If-Modified-Since","0") sebelum ajax mengirim permintaan;
8 Tambahkan xmlHttpRequest.setRequestHeader("Cache-Control","no-cache") sebelum ajax mengirim permintaan;




Mantan:c# Konversi \u64CD\u4F5C\u6210\u529F ke bahasa Cina "Operasi Berhasil"
Depan:Validasi jQuery html5Validasi plugin berdasarkan formulir HTML5
 Tuan tanah| Diposting pada 05/09/2015 10.23.09 |
url?username=test&aaa= Math.random()
 Tuan tanah| Diposting pada 05/09/2015 10.24.24 |
Metode $.getJson Ketika halaman yang sama diminta berulang kali, hanya data yang dimuat dari cache, dan URL perlu diikuti oleh parameter dinamis setiap kali dimuat ulang
$.getJson('a.ashx?t='+new Date() ,'{a:b}',fun.... )
Mengubah parameter dalam daftar parameter tidak valid.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = new Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Ini terkait dengan mekanisme caching browser, dan Anda juga dapat mengatur halaman agar tidak di-cache, sehingga parameter ini tidak digunakan.
obj.src='rand.action?d='+timenow;
}
<img id='rand' src='rand.action?t=<%=new Date().getTime() %>' onclick='changeValidateCode(this)' title='Tidak dapat melihat dengan jelas? Ubah satu! ' width='50' height='22'/>
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com