2011-02-07 15 views
20

Ho una richiesta che restituisce una pagina jsp. Ma il fatto è che jsp include jsp: include in esso (chiama un altro file jsp in esso) e cioè restituisce l'errore 80020101.Problema di richiesta Ajax: errore 80020101

Qualche idea?

Grazie

risposta

8

Togliere javascript dichiarazioni che importa uno script utilizzando src-attributo. 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

modo più semplice per sarebbe quello di aggiungere un parametro alla richiesta AJAX come ajax = 1 e nascondere le dichiarazioni JavaScript quando ajax -parameter esiste è in richiesta.

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

+0

Questo è ragionevole ma, il file js che usiamo è molto grande e non possiamo copiarne una parte. E il file jsp viene riutilizzato molte volte prima di questo, ma non in questo modo. – Ali

+0

Hai considerato di nascondere la dichiarazione quando esegui AJAX? – heikkim

+0

Il passaggio da tag di script con attributi src a javascript in linea è * non * ragionevole. – DCShannon

0

Sei per caso incluso un file js?

Perché

Errore 80020101 significa che IE non se ne grado di compilare lo script.

+0

sì, ho usato un file js ma il fatto è che ho riutilizzato quel codice (jsp e js) in diversi punti del progetto ma non c'è alcun problema su di essi. Il caso qui è che ho usato ajax per richiedere la pagina jsp qui. .. – Ali

33

È inoltre possibile ottenere questo errore se si sta facendo una chiamata AJAX da jQuery e si passa una virgola in più sulla fine della matrice, 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 che virgola dopo lo sField5? Questo è l'errore di sintassi. 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 sintassi") 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 si ottiene l'errore 80020101, i miei suggerimenti sono:

  1. cercare eventuali chiamate AJAX e cercare una virgola in più.
  2. Cerca qualsiasi array (come materiale in parentesi graffe) dove c'è una virgola in più alla fine.
  3. Se ciò non aiuta ancora, quindi esaminare la tecnica in cui si utilizza <!-- e //--> 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. Passare alla versione più recente di jQuery.
  5. Iniziare a rimuovere il pezzo pezzo per pezzo dal blocco di script e aggiungere gli elementi lentamente finché non trovi il codice di errore.
+1

L'aggiornamento di jQuery è stato sufficiente per risolvere il problema. – CarComp

5

Ora ho riscontrato questo problema con jQuery (anche l'ultima versione) due volte. L'UNICA soluzione è di copiare e incollare di tutti i del javascript in un file grande ed eseguirlo tramite JSLint (jsfiddle.net, preferito).È stato in grado di segnalare diversi errori minori (tra cui uno virgola 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/

4

Nel mio caso ho scoperto che c'era un commento HTML nel mio codice JS come:

<script type="text/javascript"> 
<!-- Unexpected Comment --> 
//code... 
</script> 

ho sostituito con <!-- -->/* */ e ha funzionato. Spero che possa aiutare qualcuno.

5

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

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

ho riscritto questo come:

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

Spero che questo è stato utile.

0

Si è verificato questo errore per un altro problema durante l'utilizzo di jquery.

Modifica $ (documento) .ready (funzione() {}); TO $ (window) .load (function() {});

0

Volevo condividere la mia esperienza. Nel mio caso non aveva nulla a che fare con javascript. Fu a causa di questa linea in HTML di un collega che utilizza angolare:

<img data-ng-model="previewImage" src="" data-ng-src="{{imageURL}}" alt="" ></img> 

mi sono ricordato che avere uno src vuoto di solito è una cosa negativa. Ho popolato il campo src e l'errore è andato via.

0

Ho riscontrato questo errore quando si utilizza jQuery 1.10.2 e si stava caricando un file che non esisteva.

Quindi assicurarsi che il file che si tenta di caricare sia corretto, altrimenti IE8 può generare l'errore 80020101.

0

I miei problemi sono stati causati da:

var a = b = c = true; 

rivolto a

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

Ora funziona benissimo!

Bye MA

1

mi sono imbattuto in questo problema e messaggi di errore di IE non era molto disponibile. 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.

0

Ho anche imbattuto in questo problema, ma dopo aver preso uno sguardo da vicino al mio file di script, ho scoperto che ho fatto un piccolo errore che funzionano senza problemi su altro browser, ma IE prenderlo 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 utilizzarlo

Così ho modificarla in:

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

e funziona correttamente.

Questo è davvero cool che IE lo rileva, ma Microsoft può migliorare il browser a mostrare errore specifico per la causa specifica, perché è molto frustrante se stesso codice funziona in altri browser

0

avevo perso di mettere 'var' in davanti alla dichiarazione variabile, ponendo che ha risolto il problema.

<script> 
    uploadDocument = "Some message"; 
</script> 

ho fissato a:

var uploadDocument = "Some message"; 

Causa principale era che avevo un elemento in forma con lo stesso ID "uploadDocument", quindi la dichiarazione sopra stava causando l'html per essere valido

0

nel mio caso il problema era 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.