Problème de requête Ajax: erreur 80020101
14 réponses
supprime les déclarations javascript qui importent un script en utilisant l'attribut src. Changez votre fichier javascript en javascript en ligne si vous en avez vraiment besoin.
Source: http://bytes.com/topic/javascript/answers/750333-ie-syntax-error-80020101-undefined-array
la façon la plus simple serait d'ajouter un paramètre à votre requête AJAX tel que ajax=1 et de cacher les déclarations javascript quand ajax - paramètre existe est demandé.
Je ne pense pas que cela ait quoi que ce soit à voir avec l'inclusion de fichiers avec jsp:include puisque le navigateur ne sait rien d'autre que le HTML avec lequel vous le lancez.
vous pouvez également obtenir cette erreur si vous faites un appel AJAX depuis jQuery et que vous passez une virgule supplémentaire à la fin du tableau, comme suit:
$.post('http://example.com/example1/',{
field1:sField1,
field2:sField2,
field3:sField3,
field4:sField4,
field5:sField5,
},function(sData){
if (console) { console.log(sData); }
});
vous voyez cette virgule après le sField5? C'est l'erreur de syntaxe. Aucun autre navigateur ne s'en souciera sauf IE. IE va lancer l'obscure erreur 80020101 (qui signifie "ne peut pas évaluer votre Javascript - vous avez une erreur de syntaxe") et il sera pratiquement déconcertant de le poursuivre si vous utilisez jQuery parce que le débogueur va il suffit de pointer vers la ligne d'eval à jQuery. Le débogueur IE ne vous sera d'aucune utilité pour poursuivre ceci, grâce à Microsoft. La prochaine fois que vous obtenez l'erreur 80020101, mes suggestions sont:
- cherchez les appels AJAX et cherchez une virgule supplémentaire.
- cherchez tous les tableaux (comme des trucs dans des accolades bouclées) où il y a une virgule supplémentaire à la fin.
- si cela n'aide toujours pas, alors regardez la technique où vous utilisez
<!--
et//-->
pour marquer votre Javascript. Cela a été un problème connu avec jQuery jusqu'à 1.7.2 et c'est toujours un bug classé avec l'équipe de jQuery. - passez à la dernière version de jQuery.
- commencez à enlever des trucs morceau par morceau de votre bloc de script et d'ajouter les éléments lentement jusqu'à ce que vous trouvez le morceau de code incriminé.
j'ai maintenant rencontré ce problème avec jQuery (même la dernière version) deux fois. La seule solution est de copier et coller tout de votre javascript dans un grand fichier et l'exécuter par JSLint (jsfiddle.net, preferred). Il a été en mesure de souligner plusieurs erreurs mineures (y compris un supplément virgule dans l'une de mes structures de rappel de données) que j'ai été en mesure de corriger et ensuite re-copier et coller à nouveau dans leurs endroits d'origine pour éliminer le problème.
j'ai eu la même erreur, mais dans mon cas, il y avait un mot réservé 'class'
.
Voici un extrait de code pour clarifier cela:
function foo(ajaxResponse){
$(elem).attr('class', ajaxResponse.class);
}
j'ai réécrit ceci comme:
$(elem).attr('class', ajaxResponse['class']);
Espère que cela a été utile.
dans mon cas, j'ai trouvé qu'il y avait un commentaire HTML dans mon code JS comme:
<script type="text/javascript">
<!-- Unexpected Comment -->
//code...
</script>
j'ai remplacé <!-- -->
par /* */
et ça a marché.
J'espère que ça aidera quelqu'un.
j'ai rencontré ce problème et les messages d'erreur de IE n'étaient pas très utiles. Donc, j'ai visité mon site dans Mozilla Firefox et Firefox a été en mesure de déterminer la ligne exacte de code qui était problématique. Pas une solution high-tech mais si vous avez utilisé juste IE pour déboguer ce problème, essayez de charger votre site en FF (avec l'extension Firebug installée) et vérifiez la sortie de la console.
Êtes-vous, par hasard, y compris un fichier js ?
parce que
erreur 80020101 signifie QU'IE n'est pas en mesure de compiler votre script.
a obtenu cette erreur pour un problème différent en utilisant jquery.
changement $(document).ready (function () {}) ; DE $(window).charge(fonction(){});
voulait partager mon expérience. Dans mon cas, il n'avait rien à voir avec le javascript. C'est à cause de cette ligne dans le HTML D'un collaborateur qui utilise angular:
<img data-ng-model="previewImage" src="" data-ng-src="{{imageURL}}" alt="" ></img>
je me suis souvenu que d'avoir un src vide est habituellement une mauvaise chose. J'ai rempli le champ src et l'erreur a disparu.
j'ai ressenti cette erreur en utilisant jquery 1.10.2 et en chargeant un fichier qui n'existait pas.
donc assurez-vous que le fichier que vous essayez de charger est correct, sinon IE8 peut jeter l'erreur 80020101.
mes problèmes ont été causés par:
var a = b = c = true;
transformé en
var a = true;
var b = true;
var c = true;
maintenant ça marche très bien!
Bye MA
j'ai également couru dans cette question, mais après avoir examiné de près mon fichier de script, j'ai découvert que j'ai fait une petite erreur qui se déroule en douceur sur un autre navigateur, mais C'est à dire choisir et me montrer l'erreur:
mon code précédent était:
var autocomplete = new google.maps.places.Autocomplete(searchTextField ,options);
après analyse, j'ai obtenu que searchTextField
est id et je dois obtenir sa valeur avant de l'utiliser
alors je le change en:
var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input,options);
et ça marche très bien.
C'est vraiment cool QU'IE le détecte, mais Microsoft peut améliorer le navigateur pour afficher une erreur spécifique pour une cause spécifique, parce que c'est très frustrant si le même code fonctionne dans d'autres navigateurs
j'avais manqué de mettre " var " devant la déclaration variable, mettant qu'il a résolu le problème.
<script>
uploadDocument = "Some message";
</script>
Je l'ai fixé à:
var uploadDocument = "Some message";
la cause fondamentale était que j'avais un élément dans la forme avec le même id "uploadDocument", donc la déclaration ci-dessus causait le html d'être malformé
dans mon cas, le problème était coma inutile supplémentaire dans Ajax POST dans la fin de la fonction d'erreur:
$.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
});
après l'avoir enlevé tout fonctionne très bien.