2011-01-14 42 views
5

Sto avendo un problema con, indovina cosa, IE8. Il codice seguente, semplificata per chiarezza, non funziona affatto:Jquery .get() non funziona in Internet Explorer

alert('before get'); 

$.get(getActivityURL('ActionName',{ 
    ts: new Date().getTime(), ...other params...}), 
{cache:false;}, 
    function (xml) { 
    alert("in get callback"); 
},'xml'); // End $.get() 

alert('in after get'); 

il getActivityUrl() emette un URL valido con parametri di richiesta.

Questo funziona correttamente in FF e Chrome. Tuttavia, in IE8, questo non entra nemmeno nel callback $ .get(). Ricevo gli avvisi "prima" e "dopo", ma non l'avviso "in" e, in effetti, non accade nulla e la richiesta NON viene inviata. Non so davvero cosa pensare qui.

Le intestazioni di risposta sono "Content-Type: application/xml; charset: iso-8859-1" come confermato in FF.

MODIFICA: $ .post() non funziona.

+0

È possibile fornire la chiamata di funzione completa anziché una con bit persi? Il tuo codice attuale non funzionerebbe con nessun browser. – lonesomeday

+0

Questo codice esatto funziona in tutti i browser tranne IE8. "GetActivityUrl (...)" restituisce un URL valido. – Alessandro

risposta

0
$J.get(getActivityURL('ActionName' 

// End $.get() 

È corretto? Intendo $ J ... Stai usando più di un framework JS o qualcosa del genere?

+0

Quindi avrebbe generato un errore in ogni browser. – rahul

+0

Sì, ho dimenticato di dirlo, è correttamente "senza conflitto" in tutta l'applicazione. Ad ogni modo, ho appena modificato la domanda. – Alessandro

0

u hanno provato:

$.ajax({ 
    url: getActivityURL('ActionName',{ts: new Date().getTime(), ...other params...}), 
    data: data, 
    success: function (xml) { 
       alert("in get callback"); 
      }, 
    dataType: 'xml' 
}); 

Solo una supposizione

EDIT:

ho trovato un filo interessante che potrebbe aiutare, check this out:

jQuery issue in Internet Explorer 8

+0

Come prima, nessuna modifica (ho incluso anche il tipo: 'GET'). Funziona ancora in tutti gli altri browser, ma non in IE – Alessandro

+0

funziona in ie6 e 7? o non funziona in tutto l'IE? –

+0

hey dude, cambio il post, controllo il link che ho aggiunto! –

1

Non sono sicuro che sia un problema, ma prova rimuovere ";" in {cache: false}

IE non come qualsiasi materiale aggiuntivo in {}, ad esempio {a: a, b: b, c: c,} funzionerà in FF, ma non in IE

+0

Grazie, anche provato, ma senza fortuna. – Alessandro

1

Penso che ci sia un problema di cache in IE.

Quindi aggiungere Math.random(), un altro parametro alla fine come "&mathRandom="+Math.random(); Perché IE riconoscerà stessa richiesta come uno precedente in modo che vi darà i dati dalla cache invece di sparare richiesta.

+0

Questo ha funzionato per me in IE9. –

13

IE è noto per il caching. Quindi è necessario assicurarsi che non si ottenga un risultato memorizzato nella cache.

È possibile disattivare la memorizzazione nella cache a livello globale impostando il valore della proprietà della cache su false nel metodo ajaxStart.

$.ajaxSetup({ 
    cache: false 
}); 

O Se si vuole eliminare il risultato nella cache in una specifica chiamata ajax, aggiungere un numero unico per la fine dell'URL. È possibile utilizzare il metodo $.now() per ottenere un numero unico

$.get("someurl.php?" + $.now() ,function(result) { 
    // do something with result 
}); 

$.now() metodo restituisce un numero che rappresenta l'ora corrente.

+3

Questo mi ha salvato la vita, grazie! –

+2

È !!! Grazie!! –

Problemi correlati