未捕获的类型错误:无法使用'在'操作员搜索'长度'在里面

Uncaught TypeError: Cannot use 'in' operator to search for 'length' in

本文关键字:操作员 在里面 长度 搜索 类型 错误      更新时间:2023-09-26

未捕获的TypeError:无法使用"in"运算符在中搜索"length">

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

{"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就可以正常工作。

为什么会发生这种情况?

in运算符仅适用于对象。你正在字符串上使用它。在使用$.each之前,请确保您的值是一个对象。在这种特定情况下,您必须解析JSON:

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

也许您忘记在$.ajax 中添加参数dataType:'json'

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

这对我来说是

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

$.each仅适用于对象。如果你的数据是一个数组,你可以像这个一样更改它

 $data = (object)$array;

唯一适用于我和$.each解决方案肯定会导致错误。所以我使用了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);
                }
            }
        });