Domanda jQuery's .load () non funziona in IE - ma va bene in Firefox, Chrome e Safari


Sto sbattendo la testa contro il muro contro questo ...

Ho il codice seguente:

$("#home").click(function(e) {
    $(".tabs").attr("src","tabs-home.gif");
    $(".islice").hide('fast');
    $(".islice").load("home.html");
    $(".islice").show('fast');  
    e.preventDefault();
});

Funziona perfettamente in Firefox, Safari e Chrome, ma IE esegue solo attr () e non esegue né il hide / show né il caricamento. Ho provato a rimuovere il nascondino e mostrare e ancora non funziona.

IE non segnala errori di sintassi, nemmeno con DebugBar. Cosa potrei fare di sbagliato?

Puoi vedere il sito dal vivo all'indirizzo http://www.brick-n-mortar.com


44
2018-06-30 03:01


origine


risposte:


Sto avendo lo stesso problema. Molti siti che ho trovato suggeriscono che IE potrebbe memorizzare nella cache il codice e suggerire di aggiungere il codice a

$("#home").click(function(e) {
    $(".tabs").attr("src","tabs-home.gif");
    $(".islice").hide('fast');
    $(".islice").load("home.html?" + new Date().getTime() );
    $(".islice").show('fast');
    e.preventDefault();
});

Questo dovrebbe garantire che un IE non stia memorizzando nella cache.

Vedere http://zacster.blogspot.com/2008/10/jquery-ie7-load-url-problem.html per maggiori informazioni.


47
2017-10-20 01:39



$ .ajaxSetup ({cache: falso});

Ciò cancellerà la cache in IE e .load () funzionerà. L'ho provato


15
2017-12-24 11:37



Se l'HTML che stai caricando è danneggiato, jQuery's .load () non funzionerà in IE .. Era il problema per me. Dopo aver corretto l'HTML, anche in IE tutto funzionava alla grande!


12
2017-12-27 10:54



Ho riscontrato questo problema e mi stavo grattando la testa tutto il giorno. Tuttavia alla fine ho trovato un lavoro e ho capito che cosa è un IE strano.

Prima di tutto,

$(".islice").load("home.html"); 

non funzionerà, non importa quanto ci proviamo. Dovremo invece usare

$.get("home.html", function (data) ....... ); 

Spiegherò il "....." perché al solito

$.get("home.html", function (data) { $(".islice").html(data); }); // doesn't work

non funzionerà

Anziché

$.get("home.html", function (data) { 
    data = '"' + data + '"';    
    $(".islice").html(data);
    var newHTML = $('.islice').html();
    $('.islice').html(newHTML.substr(1,newHTML.length-2));
}); // works

funzionerà.

Spiegazione: => i dati potrebbero contenere nuovi caratteri di linea. quindi impostazione innerHTML = data; si rompe a causa loro Aggiungendo le virgolette la convertiamo in una stringa, ma facendo in modo che l'html aggiunga virgolette extra, così mi libererò nuovamente delle virgolette.

Morale: => IE fa schifo .. Nient'altro ..


6
2017-07-06 12:25



Ho trovato che la funzione .load () non ha funzionato molto bene con IE, ma l'utilizzo di $ .get () ha funzionato perfettamente, ad es.

var dummy = new Date().getTime();
$.get("home.html" + dummy, function(data) {
   $(".islice").html(data);
});

4
2018-06-09 13:00



Ho trovato questo workaround per funzionare:

$.ajax("loaded.html", {
    cache: false,
    success: function(data, textStatus, jqXHR) {
        $("#content-1").html(data);
    },
    dataType:"html"
});

dove:

  • "loaded.html" è l'URL del file da caricare.
  • $ ("# content-1") è l'elemento che conterrà i dati caricati (e gli script).

4
2017-07-02 08:18



Ho avuto lo stesso problema con IE9.

Tutte le richieste di ajax muoiono silenziosamente per impostazione predefinita. Usando http://api.jquery.com/ajaxError/ Sono stato in grado di determinare il tipo di errore registrando il messaggio di eccezione: un errore con il codice c00ce56e.

Si scopre che questo significa che la risposta non viene superata utf-8 codificato, come dovrebbe essere in risposta a una richiesta Ajax.

Si scopre che ho avuto un errore di battitura in header('Content-type: text/html; charset=utf-8');


3
2018-03-19 17:05