TypeError não capturado: Não é possível usar o operador 'in' para pesquisar por 'length' em

101

TypeError não capturado: não é possível usar o operador 'in' para pesquisar 'length' em "

Este é o erro que recebo quando tento fazer um $.eachpara este objeto JSON:

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

Também tentei fazer o mesmo com o stringify, mas recebo o mesmo erro:

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

Se eu remover parâmetros ___DDSESSIONID\\u003d06CBEC9D1A53616EFF703A8C71FBC2B4%3A%2FMobilTestdo objeto, o $ .each funciona bem.

Por que isso pode estar acontecendo?

Iván Alberto Fontalvo Salgado
fonte
4
Formate seu código, é impossível lê-lo assim. Você pode usar o {}botão do editor de texto ou recuar 4 espaços em cada linha de código.
Sidd de

Respostas:

236

O inoperador funciona apenas em objetos. Você o está usando em uma corda. Certifique-se de que seu valor seja um objeto antes de usá-lo $.each. Neste caso específico, você deve analisar o JSON :

$.each(JSON.parse(myData), ...);
Felix Kling
fonte
Felix, antes de $ .each eu tenho JSON.parse, o erro aparece quando o envio da chave tem o valor -> "codParameters? ___ DDSESSIONID \ u003d14EA4721A904D6DD71591156996E29F7% 3A% 2FMobilTest".
Iván Alberto Fontalvo Salgado
Poste seu código, não consigo reproduzir o erro que você está descrevendo: jsfiddle.net/5asbeatq
Felix Kling
2
Não poste uma resposta se não for. Edite sua pergunta e inclua o código relevante na pergunta.
Felix Kling
perdi 2 horas e finalmente consegui funcionar usando validator.showErrors(JSON.parse(data)), muito obrigado, senhor ..
Mohammed Sufian
Recebo este erro para $ .each ("ul li", function (k, v) {...});
Cr1xus
18

talvez você se esqueça de adicionar o parâmetro dataType: 'json' em seu $ .ajax

$.ajax({
   type: "POST",
   dataType: "json",
   url: url,
   data: { get_member: id },
   success: function( response ) 
   { 
     //some action here
   },
   error: function( error )
   {
     alert( error );
   }
});
Tri W. Herlambang
fonte
Isso fez tudo para mim. Obrigado!
Luis Rock