未捕获的 TypeError: 无法使用“ in”运算符在

未捕获的 TypeError: 无法使用“ in”运算符在 ”

这是我在尝试对这个 JSON 对象执行 $.each操作时收到的错误:

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

I have also tried to do the same with stringify, but I receive the same error:

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

如果我从对象中删除参数 ___DDSESSIONID\\u003d06CBEC9D1A53616EFF703A8C71FBC2B4%3A%2FMobilTest,$. each 可以正常工作。

为什么会这样?

368324 次浏览

in操作符只对对象有效。你把它用在一个字符串上。在使用 $.each之前,请确保您的值是一个对象。在这个特定的情况下,你必须 parse the JSON:

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

maybe you forget to add parameter dataType:'json' in your $.ajax

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

唯一对我和 $.each有效的 solution肯定是导致错误的原因。所以我使用 for loop,它不再抛出错误。

示例代码

     $.ajax({
type: 'GET',
url: 'https://example.com/api',
data: { get_param: 'value' },
success: function (data) {
for (var i = 0; i < data.length; ++i) {
console.log(data[i].NameGerman);
}
}
});

this work for me

$.each(JSON.parse("[" + data + "]"))

$.each only works on objects . if your data is an array you can change it like this

 $data = (object)$array;