未捕获的类型错误:无法使用“in”运算符在

Posted

技术标签:

【中文标题】未捕获的类型错误:无法使用“in”运算符在【英文标题】:Uncaught TypeError: Cannot use 'in' operator to search for 'length' in 【发布时间】:2015-07-27 23:10:59 【问题描述】:

未捕获的 TypeError: 无法使用 'in' 运算符在 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 工作正常。

为什么会发生这种情况?

【问题讨论】:

请格式化你的代码,这样读是不可能的。您可以使用 文本编辑器按钮,或将每个代码行缩进 4 个空格。 【参考方案1】:

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

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

【讨论】:

Felix,在 $.each 之前我有 JSON.parse ,当密钥提交中有值时出现错误 -> "codParameters?___DDSESSIONID\u003d14EA4721A904D6DD71591156996E29F7%3A%2FMobilTest"。 请发布您的代码,我无法重现您描述的错误:jsfiddle.net/5asbeatq 如果不是答案,请勿发布。 Edit your question 并在问题中包含相关代码 浪费了 2 个小时,终于用 validator.showErrors(JSON.parse(data)) 让它工作了,非常感谢先生.. 我得到这个错误 $.each("ul li",function(k,v) ... );【参考方案2】:

也许你忘记在 $.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 );
   
);

【讨论】:

对我来说就是这样。谢谢!【参考方案3】:

唯一对我和$.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);
                
            
        );

【讨论】:

【参考方案4】:

这对我有用

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

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

 $data = (object)$array;

【讨论】:

这并没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review

以上是关于未捕获的类型错误:无法使用“in”运算符在的主要内容,如果未能解决你的问题,请参考以下文章

Jquery - 未捕获的类型错误:无法使用“in”运算符在中搜索“324”

未捕获的类型错误:无法使用“in”运算符在未定义的 vue 路由器中搜索“路径”

未捕获的类型错误:无法使用“in”运算符在 JSON 字符串中搜索“”

未捕获的类型错误:无法使用“in”运算符在 null 中搜索“SUPPORT_COOKIES”

我得到一个未被捕获的类型错误,在尝试获取div时无法读取未定义的属性长度

数据表:未捕获的类型错误:无法读取未定义的属性“长度”