web-dev-qa-db-fra.com

Problème de demande Ajax: erreur 80020101

J'ai une demande qui renvoie une page jsp. Mais le fait est que le jsp inclut le jsp: incluez dedans (il appelle un autre fichier jsp dedans) et c.-à-d. Donne l'erreur 80020101.

Des idées?

Merci

22
Ali

Supprimez les déclarations javascript qui importent un script à l'aide de l'attribut src. Changez votre fichier javascript en inline-javascript si vous en avez vraiment besoin.

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

Le moyen le plus simple serait d'ajouter un paramètre à votre AJAX telle que ajax = 1 et de masquer le javascript déclarations lorsque ajax -paramètre existe est dans la demande.

Je ne pense pas que cela ait quoi que ce soit à voir avec l'inclusion de fichiers avec jsp: include car le navigateur ne connaît rien d'autre que le code HTML avec lequel vous le lancez.

8
heikkim

Vous pouvez également obtenir cette erreur si vous effectuez un appel AJAX à partir de jQuery et que vous passez une virgule supplémentaire à la fin du tableau, comme ceci:

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

Voir cette virgule après le sField5? C'est l'erreur de syntaxe. Aucun autre navigateur ne s'en souciera, sauf IE. IE générera l'erreur obscure 80020101 (ce qui signifie "ne peut pas évaluer votre Javascript - vous avez une erreur de syntaxe") et il sera pratiquement déroutant de le poursuivre si vous utilisez jQuery car le débogueur pointera simplement vers la ligne eval dans jQuery. Le IE débogueur ne vous sera d'aucune utilité pour le poursuivre, grâce à Microsoft. La prochaine fois que vous obtiendrez l'erreur 80020101, mes suggestions sont:

  1. Recherchez tous les appels AJAX et recherchez une virgule supplémentaire.
  2. Recherchez les tableaux (comme les éléments entre accolades) où il y a une virgule supplémentaire à la fin.
  3. Si cela ne vous aide toujours pas, 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 déposé avec l'équipe jQuery.
  4. Passez à la dernière version de jQuery.
  5. Commencez à supprimer des éléments morceau par morceau de votre bloc de script et à ajouter lentement les éléments jusqu'à ce que vous trouviez le code incriminé.
34
Volomike

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 ceci:

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

J'ai réécrit ceci:

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

J'espère que cela vous a été utile.

5
ManGysT

J'ai maintenant rencontré ce problème avec jQuery (même la dernière version) deux fois. La SEULE solution consiste à copier et coller tous votre javascript dans un gros fichier et exécutez-le via JSLint (jsfiddle.net, préféré). Il a été en mesure de signaler plusieurs erreurs mineures (y compris une extra - virgule dans l'une de mes structures de rappel de données) que j'ai pu corriger, puis recopier et coller à leur emplacement d'origine pour éliminer le problème.

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

5
DevlshOne

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é <!-- --> avec /* */ et cela a fonctionné. J'espère que cela aidera quelqu'un.

4
Arvind Bhardwaj

Dans mon cas, le problème était un coma inutile supplémentaire dans Ajax POST dans la fonction de fin 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 retiré, tout fonctionne bien.

1
1_bug

J'ai également rencontré ce problème, mais après avoir examiné de près mon fichier de script, j'ai découvert que j'avais fait une petite erreur qui fonctionnait correctement sur un autre navigateur, mais IE choisissez-le et montrez-moi le 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

Je le change donc en:

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

et ça marche bien.

C'est vraiment cool que IE le détecte, mais Microsoft peut améliorer le navigateur pour afficher une erreur spécifique pour une cause spécifique, car c'est très frustrant si le même code fonctionne dans d'autres navigateurs

1
aakash jalodkar

J'ai rencontré ce problème et les messages d'erreur d'IE n'étaient pas très utiles. J'ai donc visité mon site dans Mozilla Firefox et Firefox a pu localiser la ligne de code exacte qui posait problème. Ce n'est pas un correctif de haute technologie, mais si vous avez utilisé uniquement IE pour déboguer ce problème, essayez de charger votre site dans FF (avec l'extension Firebug installée) et de vérifier la sortie de la console.

1
janoulle

J'avais manqué de mettre "var" devant la déclaration de variable, ce qui a résolu le problème.

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

Je l'ai fixé à:

var uploadDocument = "Some message";

La cause principale était que j'avais un élément dans le formulaire avec le même identifiant "uploadDocument", donc la déclaration ci-dessus provoquait une mauvaise formation du code HTML

0
Shilpa R

Êtes-vous par hasard en incluant un fichier js?

Car

L'erreur 80020101 signifie que IE n'est pas en mesure de compiler votre script.

0
Clyde Lobo

Mes problèmes ont été causés par:

var a = b = c = true;

tournés vers

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

Maintenant ça marche bien!

Au revoir MA

0
user3481746

Vous avez cette erreur pour un problème différent lors de l'utilisation de jquery.

Changer $ (document) .ready (function () {}); TO $ (fenêtre) .load (fonction () {});

0
deepakssn

J'ai rencontré cette erreur lors de l'utilisation de jQuery 1.10.2 et je chargeais un fichier qui n'existait pas.

Assurez-vous donc que le fichier que vous essayez de charger est correct, sinon IE8 peut renvoyer l'erreur 80020101.

0
ndequeker

Je voulais partager mon expérience. Dans mon cas, cela n'avait rien à voir avec javascript. C'est à cause de cette ligne dans le code HTML d'un collègue qui utilise angulaire:

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

Je me suis souvenu qu'avoir un src vide est généralement une mauvaise chose. J'ai rempli le champ src et l'erreur a disparu.

0
user1442605