JQuery.get () no funciona en IE8/9. No cargará las páginas en caché 304 no modificadas
-
29-10-2019 - |
Pregunta
Código Igniter versión '2.0.3' JQuery 1.7 JQuery History Plugin
Hola chicos,
Tengo una aplicación Codeigniter que he construido de manera AJAX. Tengo una función de la siguiente manera:
$(document).on('click','.ajax_link',function(e){
//Stop the normal href action
e.preventDefault();
//Grab the destination URL
var new_url = $(this).attr('href')
//Grab the content via ajax and pass it to the history change function
$.get(base_url+new_url,function(data){
History.pushState({
content:data.content,
url:data.url
}, data.title, data.url);
//Refresh some site variables
refresh();
},'json');
});
Todo lo que hace captura clics en elementos de anclaje con una clase de AJAX_LINK y envía la respuesta a una función que maneja la ubicación de esos datos de respuesta en la página.
Esto funciona en Chrome y FF. Hago clic en el enlace, jQuery hace la solicitud Get, recupero un objeto JSON y mi historial.pushState () La función inyecta algunos de los datos JSON en mi página.
El problema que tengo está en IE8. Esencialmente, lo que está sucediendo es cuando abro la aplicación por primera vez, los enlaces funcionan pero solo funcionan una vez. La segunda vez que hago clic en un enlace:
- ¿El Ajax
GET
- Recibe una respuesta de 304 (no modificada)
- No llama al
jQuery.get()
Función de devolución de llamada y, por lo tanto, detiene muertos.
Si borro el caché vuelve a funcionar. Entonces, supongo que IE está haciendo la solicitud GET, pero luego ve que ya ha solicitado ese mismo archivo exacto en el pasado ... y así detiene el proceso por completo.
¿Alguien sabe de una solución a esto? He buscado menciones de 304 errores y errores con Ajax y almacenamiento en caché en IE, pero todavía no he encontrado un problema idéntico al mío.
Cualquier ayuda muy apreciada
(Probado en Windows Virtual Machine IE8, y el modo IE 8 en Internet Explorer 9)
Resuelto
Solo necesitaba agregar el siguiente código a mi documento. Función lista y el problema desapareció.
$.ajaxSetup ({cache: false});
No hay solución correcta