Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 12520|Respuesta: 2

[Jquery] [Girar] a jQuery.getJSON problema de caché

[Copiar enlace]
Publicado en 5/9/2015 10:21:58 | | |
El método getJson de jquery lee la misma petición directamente desde la caché tras la primera petición al servidor para obtener los datos devueltos, y ya no solicita la base de datos.

Así es como solucionarlo:

1 Hacer que la URL sea diferente para cada llamada
Método: Añadir un número aleatorio al parámetro.
Ejemplo 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
Ejemplo 2:
"xxx.aspx?randID="+Math.random
Ejemplo 3:
"xxx.aspx?randID="+ escape(nueva fecha())
2 Poner caché en False
Versión sin caché de $.ajax:
$.ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
alerta (msg);
}
});
3. Incluir la siguiente sentencia en la parte superior del archivo labels.html:

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

<META HTTP-EQUIV="Caduca" CONTENIDO="-1">
4. La función de carga no solo puede llamar a HTML, sino también scripts, como labels.php, puedes usar la función de encabezado en el archivo php:

<?php

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

?>
5 Usa el método de publicación en lugar de obtener.
Al utilizar el método de publicación, debes prestar atención a:
Establece el tipo de contexto del encabezado en application/x-www-form-urlencode para asegurarse de que el servidor sepa que hay variables de parámetros en la entidad. Normalmente se utiliza el encabezado SetRequest("Context-Type","application/x-www- form-urlencoded) del objeto XmlHttpRequest; ")。 Ejemplo:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
El parámetro es un par clave-valor correspondiente al nombre/valor, y cada par de valores está separado por un signo de >. Por ejemplo, nombre de la vara=abc&sex=hombre&edad=18, ¿presta atención a la name=update.php?

abc&sex=hombre&edad=18 y var name=?abc&sex=hombre&edad=18 se escriben incorrectamente;
El argumento se envía en el método Send, por ejemplo, xmlHttp.send(name); Si es un método get, directamente xmlHttp.send(null);

El parámetro de solicitud del lado del servidor distingue entre Obtener y Publicar. Si es el método get, entonces $username = $_GET["username"]; Si es un método de publicación, entonces $username = $_POST["username"];
6 Añadir cabecera ("Cache-Control: no-cache, must-reva lidate") en el lado del servidor;
7 Añadir xmlHttpRequest.setRequestHeader("If-Modified-Since","0") antes de que ajax envíe la solicitud;
8 Añadir xmlHttpRequest.setRequestHeader("Cache-Control", "no-cache") antes de que ajax envíe la solicitud;




Anterior:c# Convertir \u64CD\u4F5C\u6210\u529F a chino "Operación Exitosa"
Próximo:Validar el plugin jQuery html5Validate basado en formularios HTML5
 Propietario| Publicado en 5/9/2015 10:23:09 |
url?username=test&aaa= Math.random()
 Propietario| Publicado en 5/9/2015 10:24:24 |
Método $.getJson Cuando se solicita repetidamente la misma página, solo se cargan los datos desde la caché, y la URL debe ir seguida de parámetros dinámicos cada vez que se recarga
$.getJson('a.ashx?t='+nueva fecha() ,'{a:b}',divertido.... )
Cambiar parámetros en la lista de parámetros es inválido.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = nueva Fecha().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
Esto está relacionado con el mecanismo de caché del navegador, y también puedes configurar la página para que no se almacene en caché, de modo que este parámetro no se utilize.
obj.src='rand.action?d='+timenow;
}
<img id='rand' src='rand.action?t=<%=new Date().getTime() %>' onclick='changeValidateCode(this)' título='¿No ves claramente? ¡Cambia uno! ' ancho='50' altura='22'/>
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com