Uncaught TypeError: Неможливо використовувати оператор "in" для пошуку "length" в


101

Uncaught TypeError: Неможливо використовувати оператор "in" для пошуку "length" in "

Це помилка, яку я отримую під час спроби зробити a $.eachдля цього об'єкта JSON:

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

Я також намагався зробити те ж саме з stringify, але я отримую ту ж помилку:

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

Якщо я ___DDSESSIONID\\u003d06CBEC9D1A53616EFF703A8C71FBC2B4%3A%2FMobilTestвидаляю параметри з об’єкта, $ .each працює нормально.

Чому це може статися?


4
Форматуйте код, читати його неможливо. Ви можете скористатися {}кнопкою редактора тексту або відступити кожен пробіл у рядку коду.
Сідд

Відповіді:


235

inОператор працює тільки на об'єктах. Ви використовуєте його на рядок. Переконайтеся, що ваше значення є об'єктом перед використанням $.each. У цьому конкретному випадку вам потрібно розібрати JSON :

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

Фелікс, перед $ .each у мене є JSON.parse, помилка з'являється, коли в ключі подання мають значення -> "codParameters? ___ DDSESSIONID \ u003d14EA4721A904D6DD71591156996E29F7% 3A% 2FMobilTest".
Іван Альберто Фонталво Сальгадо

Будь ласка, опублікуйте свій код, я не можу спростувати помилку, яку ви описуєте: jsfiddle.net/5asbeatq
Фелікс Клінг

2
Не публікуйте відповіді, якщо вона не одна. Змініть питання і включити відповідний код в питанні.
Фелікс Клінг

витратив 2 години, і, нарешті, отримав роботу, використовуючи validator.showErrors(JSON.parse(data)), спасибі, сер.
Мохаммед Суфіан

Я отримую цю помилку для $ .each ("ul li", функція (k, v) {...});
Cr1xus

18

можливо ви забудете додати параметр dataType: 'json' у свій $ .ajax

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

Це зробив це для мене. Дякую!
Луїс Рок
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.