JQuery.get () non funziona in IE8/9. Non carichi pagine cache 304 non modificate
-
29-10-2019 - |
Domanda
Codice versione di accensione '2.0.3' plug -in JQuery 1.7 cronologia jQuery
Ciao ragazzi,
Ho un'app CodeIgniter che ho costruito in modo Ajax. Ho una funzione come segue:
$(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');
});
Tutto ciò che cattura i clic sugli elementi di ancoraggio con una classe di Ajax_Link e invia la risposta a una funzione che gestisce il posizionamento di tali dati di risposta nella pagina.
Funziona in Chrome e FF. Faccio clic sul collegamento, JQuery fa la richiesta di Get, ottengo un oggetto JSON e la mia storia.PushState () inietta alcuni dei dati JSON nella mia pagina.
Il problema che ho è in IE8. Essenzialmente quello che sta succedendo è quando apro per la prima volta l'app, i collegamenti funzionano ma funzionano solo una volta. La seconda volta che faccio clic su un collegamento:
- Fa l'Ajax
GET
- Riceve una risposta di 304 (non modificata)
- Non chiama il
jQuery.get()
funzione di callback e quindi si ferma morto.
Se cancro la cache, funziona di nuovo. Quindi la mia ipotesi è che IE stia facendo la richiesta di Get, ma poi vede che ha già richiesto lo stesso file esatto in passato ... e quindi interrompe il processo del tutto.
Qualcuno sa di una soluzione a questo? Ho avuto una ricerca di 304 errori ed errori con Ajax e memorizzazione nella cache in IE, ma non ho ancora trovato un problema identico al mio.
Qualsiasi aiuto molto apprezzato
(Testato su Windows Virtual Machine IE8 e IE 8 in modalità in Internet Explorer 9)
Risolto
Ho solo bisogno di aggiungere il seguente codice al mio documento. La funzione di prua e il problema è scomparso.
$.ajaxSetup ({cache: false});
Nessuna soluzione corretta