JQuery $.each遍历JSON字符串报Uncaught TypeError:Cannot use 'in' operator to search for

查看一个简单的jQuery的例子来遍历一个JavaScript数组对象。

[js] view plaincopy

  1. var json = [
  2. {"id":"1","tagName":"apple"},
  3. {"id":"2","tagName":"orange"},
  4. {"id":"3","tagName":"banana"},
  5. {"id":"4","tagName":"watermelon"},
  6. {"id":"5","tagName":"pineapple"}
  7. ];
  8. $.each(json, function(idx, obj) {
  9. alert(obj.tagName);
  10. });

上面的代码片断工作正常,提示 “apple”, “orange” … 等,如预期一样。

问题: JSON 字符串

下面的例子中,声明了一个JSON字符串(随附单或双引号)直接地。

[js] view
plain
copy

  1. var json = ‘[{"id":"1","tagName":"apple"},{"id":"2","tagName":"orange"},
  2. {"id":"3","tagName":"banana"},{"id":"4","tagName":"watermelon"},
  3. {"id":"5","tagName":"pineapple"}]‘;
  4. $.each(json, function(idx, obj) {
  5. alert(obj.tagName);
  6. });

在Chrome中,它显示在控制台下面的错误:

Uncaught TypeError: Cannot use ‘in‘ operator to search for ‘156‘

in [{"id":"1","tagName":"apple"}...

解决方案:JSON字符串转换为JavaScript对象。

要修复它,通过标准JSON.parse()或jQuery 的 $.parseJSON 将其转换为JavaScript对象。

[js] view
plain
copy

  1. var json = ‘[{"id":"1","tagName":"apple"},{"id":"2","tagName":"orange"},
  2. {"id":"3","tagName":"banana"},{"id":"4","tagName":"watermelon"},
  3. {"id":"5","tagName":"pineapple"}]‘;
  4. $.each(JSON.parse(json), function(idx, obj) {
  5. alert(obj.tagName);
  6. });
  7. //or
  8. $.each($.parseJSON(json), function(idx, obj) {
  9. alert(obj.tagName);
  10. });

JQuery $.each遍历JSON字符串报Uncaught TypeError:Cannot use 'in' operator to search for

时间: 2024-10-06 05:54:02

JQuery $.each遍历JSON字符串报Uncaught TypeError:Cannot use 'in' operator to search for的相关文章

jquery each报 Uncaught TypeError: Cannot use 'in' operator to search for错误

用$.each()来遍历后台传过来的json数据.直接遍历传过来的数据时就发生 Uncaught TypeError: Cannot use 'in' operator to search for 这个error. 原因是:因为我们后台传过来的是json数据,但我们$.each()遍历的数据是要javascript对象;所以要把它转给javascript对象.可以使用 JSON.parse() || $.parseJSON()  这个两个方法来转换. 错误代码: <script> $(docu

iOS解析JSON字符串报错Error Domain=NSCocoaErrorDomain Code=3840 &quot;Invalid escape sequence around character 586.&quot;

将服务器返回的JSON string转化成字典时报错: Error Domain=NSCocoaErrorDomain Code=3840 "Invalid escape sequence around character 586." 仔细查找后在原来解析的基础上将"\"字符替换成""或"\\"后,解析成功.具体的解析代码如下: - (NSDictionary *)parseJsonStringToNSDictionary:(

$.each遍历json对象

查看一个简单的jQuery的例子来遍历一个JavaScript数组对象. var json = [ {"id":"1","tagName":"apple"}, {"id":"2","tagName":"orange"}, {"id":"3","tagName":"banana&q

ESL python调用C模块时传递unicode字符串报错问题解决

在是用freeswitch时利用ESL的python调用时传递字符串报错 TypeError: in method 'ESLconnection_api', argument 2 of type 'char const *' 是由于python传递的字符串为unicode,在c语言char使用的ascii码方式在SWIG中做一下转换,代码如下 修改文件esl_wrap.cpp ##### /* for C or C++ function pointers *///添加定义#define SWIG

Uncaught TypeError: $(...).tmpl is not a function(…)

当程序报错:Uncaught TypeError: $(...).tmpl is not a function(…) 首先,需要引入juqey和tmpl:http://pan.baidu.com/s/1kVDarK7,密码:rtua 然后,注释掉@Scripts.Render("~/bundles/jquery")

reactjs Uncaught TypeError: Cannot read property &#39;location&#39; of undefined

reactjs Uncaught TypeError: Cannot read property 'location' of undefined reactjs 路由配置 怎么跳转 不成功 国内搜索引擎 找半天找不到 有用 资料 于是 goolge package.json 里面配置: "react-router": "^3.0.0"  改为3.x 就可以了 , 改完 执行 npm install 原文参考: https://github.com/acdlite/r

easyui Datagrid查询报错Uncaught TypeError:Cannot read property &#39;length&#39; of undefined

1.问题描述 easyui中datagrid执行loadData方法出现如下异常:Cannot read property 'length' of undefined 2.一开始怀疑是js或者页面的问题,然后从早上干到下午,网上各种方法用尽了就是不行! 最后发现规律了: 使用mybatis从数据库查询返回的List不报错,但是自己new的ArrayList总是报错! 后来发现原来mybatis返回的不是ArrayList!而是PageList! 3.解决问题 PageList中有个参数Pagin

Uncaught TypeError: jQuery.i18n.browserLang is not a function

/********************************************************************* * Uncaught TypeError: jQuery.i18n.browserLang is not a function * 说明: * 使用jQuery.i18n.properties.js来做语言自动转换,结果函数无效,读 * 了一下插件源代码,发现已经换掉了接口名称.功能. * * 2017-8-28 深圳 龙华樟坑村 曾剑锋 ********

jS Ajax 上传文件报错&quot;Uncaught TypeError: Illegal invocation&quot;

jS Ajax 上传文件报错"Uncaught TypeError: Illegal invocation" query-3.1.1.min.js:4 Uncaught TypeError: Illegal invocation 错误原因: jQuery Ajax 上传文件处理方式, 使用ajax向后台发送数据时其中的图片数据的参数类型为file,属于对象,而不是一个字符串值.导致错误的出现 var formData = new FormData(); formData.append(