Problème de requête Ajax: erreur 80020101

j'ai une requête qui renvoie une page jsp. Mais le fait est, la jsp comprend jsp:include(il en appelle un autre fichier jsp) et ie donne l'erreur 80020101.

des idées?

Merci

21
demandé sur Ali 2011-02-07 10:35:26

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.

8
répondu heikkim 2011-02-07 07:47:21

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:

  1. cherchez les appels AJAX et cherchez une virgule supplémentaire.
  2. cherchez tous les tableaux (comme des trucs dans des accolades bouclées) où il y a une virgule supplémentaire à la fin.
  3. 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.
  4. passez à la dernière version de jQuery.
  5. 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é.
34
répondu Volomike 2012-05-02 11:40:51

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.

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

5
répondu DevlshOne 2012-04-27 18:20:57

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.

5
répondu ManGysT 2012-12-05 12:28:58

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.

4
répondu Arvind Bhardwaj 2012-11-14 06:53:28

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.

1
répondu janoulle 2014-12-26 16:33:28

Ê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.

0
répondu Clyde Lobo 2011-02-07 07:50:02

a obtenu cette erreur pour un problème différent en utilisant jquery.

changement $(document).ready (function () {}) ; DE $(window).charge(fonction(){});

0
répondu deepakssn 2013-03-12 08:03:56

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.

0
répondu user1442605 2013-06-24 18:49:54

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.

0
répondu Voles 2014-02-26 13:14:58

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

0
répondu user3481746 2014-03-31 15:36:23

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

0
répondu aakash jalodkar 2015-03-25 05:47:23

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é

0
répondu Shilpa R 2015-10-08 06:10:43

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.

0
répondu 1_bug 2016-02-23 12:23:28