Problema di richiesta Ajax: errore 80020101

Ho una richiesta che restituisce una pagina jsp. Ma il fatto è che il jsp include jsp: include in esso (chiama un altro file jsp in esso) e cioè dà l’errore 80020101.

Qualche idea?

Grazie

Rimuovi le dichiarazioni javascript che importano uno script usando l’attributo src. Cambia il tuo file javascript in inline-javascript se ne hai davvero bisogno.

Fonte: http://bytes.com/topic/javascript/answers/750333-ie-syntax-error-80020101-undefined-array

Il modo più semplice sarebbe quello di aggiungere un parametro alla tua richiesta AJAX come ajax = 1 e hide le dichiarazioni javascript quando ajax -parameter esiste è nella richiesta.

Non penso che questo abbia nulla a che fare con l’inclusione di file con jsp: include dal momento che il browser non conosce altro che l’HTML con cui lo si getta.

Puoi anche ottenere questo errore se stai facendo una chiamata AJAX da jQuery e passi una virgola extra alla fine dell’array, in questo modo:

$.post('http://example.com/example1/',{ field1:sField1, field2:sField2, field3:sField3, field4:sField4, field5:sField5, },function(sData){ if (console) { console.log(sData); } }); 

Vedi quella virgola dopo lo sField5? Questo è l’errore di syntax. Nessun altro browser si preoccuperà, ma IE. IE lancerà l’oscuro errore 80020101 (che significa “non può valutare il tuo Javascript – hai un errore di syntax”) e sarà praticamente sconcertante scovarlo se usi jQuery perché il debugger punta semplicemente alla linea di valutazione in jQuery. Il debugger di IE non ti servirà per inseguirlo, grazie a Microsoft. La prossima volta che ottieni l’errore 80020101, i miei suggerimenti sono:

  1. Cerca eventuali chiamate AJAX e cerca una virgola extra.
  2. Cerca eventuali array (come materiale in parentesi graffe) dove c’è una virgola in più alla fine.
  3. Se ancora non ti aiuta, guarda la tecnica in cui usi per contrassegnare il tuo Javascript. Questo è stato un problema noto con jQuery fino alla 1.7.2 ed è ancora un bug archiviato con il team jQuery.
  4. Passa all’ultima versione di jQuery.
  5. Iniziare a rimuovere le informazioni pezzo per pezzo dal blocco di script e aggiungere gli elementi lentamente fino a trovare il pezzo di codice che causa l’errore.

Ora ho incontrato questo problema con jQuery (anche l’ultima versione) due volte. L’UNICA soluzione è quella di copiare e incollare tutto il tuo javascript in un unico grande file ed eseguirlo tramite JSLint (jsfiddle.net, preferito). È stato in grado di segnalare diversi errori minori (inclusa una virgola extra in una delle mie strutture di callback dei dati) che sono stato in grado di correggere e quindi ricopiare e incollare di nuovo nelle loro posizioni originali per eliminare il problema.

http://jsfiddle.net/devlshone/QKxup/3/

Ho avuto lo stesso errore, ma nel mio caso c’era una parola riservata 'class' . Ecco uno snippet di codice per chiarire questo:

 function foo(ajaxResponse){ $(elem).attr('class', ajaxResponse.class); } 

Ho riscritto questo come:

 $(elem).attr('class', ajaxResponse['class']); 

Spero che questo sia stato utile.

Nel mio caso ho trovato che c’era un commento HTML nel mio codice JS come:

  

Ho sostituito con /* */ e ha funzionato. Spero che aiuti qualcuno.

Mi sono imbattuto in questo problema e i messaggi di errore di IE non sono stati molto utili. Così, ho visitato il mio sito in Mozilla Firefox e Firefox è stato in grado di individuare l’esatta riga di codice che era problematica. Non una correzione high tech, ma se hai utilizzato solo IE per il debug di questo problema, prova a caricare il tuo sito in FF (con l’estensione Firebug installata) e controlla l’output della console.

Sei per caso incluso un file js?

Perché

L’errore 80020101 indica che IE non è in grado di compilare lo script.

Hai riscontrato questo errore per un altro problema durante l’utilizzo di jQuery.

Cambia $ (document) .ready (function () {}) ; TO $ (window) .load (function () {});

Volevo condividere la mia esperienza. Nel mio caso non aveva nulla a che fare con javascript. È stato a causa di questa linea nell’HTML di un collaboratore che utilizza l’angular:

   

Mi sono ricordato che avere un src vuoto di solito è una brutta cosa. Ho popolato il campo src e l’errore è andato via.

Ho riscontrato questo errore durante l’utilizzo di jQuery 1.10.2 e stavo caricando un file che non esisteva.

Quindi assicurati che il file che tenti di caricare sia corretto, altrimenti IE8 può lanciare l’errore 80020101.

I miei problemi sono stati causati da:

 var a = b = c = true; 

trasformato in

 var a = true; var b = true; var c = true; 

Ora funziona bene!

Ciao MA

Ho anche avuto questo problema, ma dopo aver esaminato attentamente il mio file di script, ho scoperto che ho fatto un piccolo errore che scorre senza problemi su altri browser, ma IE lo seleziona e mi mostra l’errore:

Il mio codice precedente era:

 var autocomplete = new google.maps.places.Autocomplete(searchTextField ,options); 

Dopo aver analizzato, ho ottenuto che searchTextField è id e devo ottenere il suo valore prima di usarlo

Quindi lo cambio a:

 var input = document.getElementById('searchTextField'); var autocomplete = new google.maps.places.Autocomplete(input,options); 

e funziona bene.

È davvero bello che IE lo rilevi, ma Microsoft potrebbe migliorare il browser per mostrare errori specifici per cause specifiche, perché è molto frustrante se lo stesso codice funzioni in altri browser

Mi ero perso a mettere ‘var’ davanti alla dichiarazione delle variabili, ponendo che risolvesse il problema.

  

L’ho risolto per:

 var uploadDocument = "Some message"; 

La causa principale era che avevo un elemento nel modulo con lo stesso id “uploadDocument”, quindi la dichiarazione di cui sopra stava causando l’html malformato

Nel mio caso il problema era un ulteriore coma inutile in Ajax POST alla fine della funzione di errore:

 $.ajax({ type: 'POST', dataType: 'text', url: '../Client/GetName', data: { ClientId: id}, success: function (respone) { alert(respone); }, error: function (xhr, ajaxOptions, thrownError) { alert(xhr.statusText); }, //<- look here, this guy complicated my simple programmer life }); 

Dopo averlo rimosso, tutto funziona correttamente.