Uncaught TypeError: Impossible d'utiliser l'opérateur 'in' pour rechercher 'length' dans


101

Uncaught TypeError: Impossible d'utiliser l'opérateur 'in' pour rechercher 'length' in "

C'est l'erreur que je reçois lorsque j'essaye de faire un $.eachà cet objet JSON:

{"type":"Anuncio","textos":["Probando esto","$ 20150515"],"submit":"codParameters?___DDSESSIONID\u003d14EA4721A904D6DD71591156996E29F7%3A%2FMobilTest"}

J'ai également essayé de faire la même chose avec stringify, mais je reçois la même erreur:

{\"type\":\"Anuncio\",\"textos\":[\"Probando esto\",\"$ 20150515\"],\"submit\":\"codParameters?___DDSESSIONID\\u003d06CBEC9D1A53616EFF703A8C71FBC2B4%3A%2FMobilTest\"}"

Si je supprime des paramètres ___DDSESSIONID\\u003d06CBEC9D1A53616EFF703A8C71FBC2B4%3A%2FMobilTestde l'objet, $ .each fonctionne correctement.

Pourquoi cela pourrait-il arriver?


4
Veuillez formater votre code, il est impossible de le lire comme ça. Vous pouvez utiliser le {}bouton de l'éditeur de texte ou mettre en retrait chaque ligne de code de 4 espaces.
— Sidd

Réponses:


237

L' inopérateur ne travaille que sur les objets. Vous l'utilisez sur une chaîne. Assurez-vous que votre valeur est un objet avant de l'utiliser $.each. Dans ce cas précis, vous devez analyser le JSON :

$.each(JSON.parse(myData), ...);

Felix, avant $ .each j'ai JSON.parse, l'erreur apparaît lorsque dans la clé soumettre ont la valeur -> "codParameters? ___ DDSESSIONID \ u003d14EA4721A904D6DD71591156996E29F7% 3A% 2FMobilTest".
— Iván Alberto Fontalvo Salgado

Veuillez poster votre code, je ne peux pas reproduire l'erreur que vous décrivez: jsfiddle.net/5asbeatq
— Felix Kling

2
Ne postez pas de réponse si ce n'est pas une réponse. Modifiez votre question et incluez le code correspondant dans la question.
— Felix Kling

gaspillé 2 heures, et finalement réussi à l'utiliser validator.showErrors(JSON.parse(data)), merci beaucoup monsieur ..
— Mohammed Sufian

J'obtiens cette erreur pour $ .each ("ul li", function (k, v) {...});
— Cr1xus

18

peut-être avez-vous oublié d'ajouter le paramètre dataType: 'json' dans votre $ .ajax

$.ajax({
   type: "POST",
   dataType: "json",
   url: url,
   data: { get_member: id },
   success: function( response ) 
   { 
     //some action here
   },
   error: function( error )
   {
     alert( error );
   }
});

Cela m'a fait ça. Merci!
— Luis Rock
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.