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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top