Question

Code Igniter Version '2.0.3' jQuery 1.7 JQUERY History Plugin

Salut les gars,

J'ai une application CodeIgniter que j'ai construite de manière Ajax. J'ai une fonction comme suit:

$(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');
});

Tout ce qu'il fait capture des clics sur les éléments d'ancrage avec une classe d'Ajax_link et envoie la réponse à une fonction qui gère le placement de ces données de réponse dans la page.

Cela fonctionne dans Chrome et FF. Je clique sur le lien, jQuery fait la demande GET, je récupére un objet JSON et ma fonction History.pushState () injecte certaines des données JSON dans ma page.

Le problème que j'ai est dans IE8. Essentiellement, ce qui se passe, c'est lorsque j'ouvre l'application pour la première fois, les liens fonctionnent mais ils ne fonctionnent qu'une seule fois. La deuxième fois, je clique sur un lien:

  • Est-ce que l'Ajax GET
  • Reçoit une réponse de 304 (non modifiée)
  • N'appelle pas le jQuery.get() Fonction de rappel et s'arrête donc morte.

Si j'efface le cache, cela fonctionne à nouveau. Donc, mon hypothèse est que IE fait la demande GET, mais il voit ensuite qu'il a déjà demandé ce même fichier exactement dans le passé ... et arrête ainsi le processus.

Quelqu'un connaît-il une solution à cela? J'ai jeté un coup d'œil aux mentions de 304 erreurs et erreurs avec Ajax et de la mise en cache dans IE, mais je n'ai pas encore trouvé de problème identique à la mienne.

Toute aide très appréciée

(Testé sur Windows Virtual Machine IE8 et IE 8 dans Internet Explorer 9)

Résolu

Il suffit d'ajouter le code suivant à mon document.

$.ajaxSetup ({cache: false});

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top