js:有关TypeError: invalid 'in' operand obj的错误
来源:互联网 发布:5x兴趣社区淘宝商店 编辑:程序博客网 时间:2024/06/01 08:18
<!doctype html><html lang="en"><script type="text/javascript">$.ajax({ url:sysPath+'/controller/getDelivery.mmx?popId='+value, type:'post', success:function(data){ console.log(data);(1)//输出结果:[{"id":1,"name":"韵达"},{"id":2,"name":"圆通"},{"id":3,"name":"申通"}] $('#delivery').html(""); //var returnData = $.parseJSON(data);(2)//将字符串转换成对象</span> var returnData = eval(data);(3)//将字符串转换成对象console.log(returnData);(4)//输出结果:[Object { id=1, name="韵达"}, Object { id=2, name="圆通"}, Object { id=3, name="申通"}] $.each(returnData, function(i, obj){ $('#delivery').append('<option value='+obj.id+'>'+obj.name+'</option>'); }); } }); </script><body> <select name="delivery" id="delivery" style="width:100px"> <c:forEach items="${list}" var="bean"> <option value="${bean.id}" ${bean.id == 1 ? "selected":""}>${bean.name}</option> </select></body></html>
使用each解析时候,如果不加(2)、(3)句,就会报错TypeError: invalid 'in' operand obj。
原理可以看看这个:http://www.bennadel.com/blog/1918-Javascript-s-IN-Operator-Does-Not-Work-With-Strings.htm
下面说说(2)、(3)句的作用,(2)、(3)句的作用是一样的,两种实现方式而已,他们的作用是什么呢?
原因:由于在js中遍历时in操作支持instance of Object, Array, Date, Number, 但是对String是不支持的,同时url:sysPath+'/controller/getDelivery.mmx?popId='+value,返回的又是json类型的字符串(如:"[{"id":1,"name":"韵达"},{"id":2,"name":"圆通"},{"id":3,"name":"申通"}]"),所以对字符串进行$.each()操作,就会报错。
解决办法:所以我们就要去字符串进行转换,转换成对象数组类型(如:[Object { id=1, name="韵达"}, Object { id=2, name="圆通"}, Object { id=3, name="申通"}]),而//var returnData = $.parseJSON(data);//将字符串转换成对象;(2) var returnData = eval(data);//将字符串转换成对象(3),这两句代码正好可以将字符串转换成对象数组,达到我们的目的
后台代码:
@Controller@RequestMapping("/controller")public class controller {@RequestMapping("/getParamDelivery")@ResponseBodypublic List<voSelect> getParamDelivery(String param){List<voSelect> list = service.getParamDelivery(pop);return deliveryList;}}public List<voSelect> getParamDelivery(String param) {List<voSelect> list = new ArrayList<voSelect>();String sql = "select DISTINCT a.id,a.name from table1 a JOIN table2 b ON a.delivery_id=b.id ";list = this.getJdbcTemplate().query(sql,new BeanPropertyRowMapper<voSelect>(voSelect.class));return list;}public class voSelect implements Serializable {private int id;private String name;public voSelect(){}public voSelect(int id, String name) {super();this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
- js:有关TypeError: invalid 'in' operand obj的错误
- 有关TypeError: invalid 'in' operand obj的错误
- js中出现TypeError: invalid 'in' operand a的错误解决
- invalid 'in' operand a
- 有关munmap_chunk() invalid pointer错误
- Python初学者错误:TypeError: unsupported operand type(s) for +: 'int' and 'str'
- [JS] TypeError: dbg is undefined 错误的解决方法
- Js处理Json的”invalid label”错误
- VC6 出现“already defined in *.obj”错误的解决方法
- android cmake编译faad库,出现 invalid operand for inline asm constraint 'M'错误
- js报TypeError $(...) is null错误
- JS中的错误异常 TypeError Reference Error
- VC++LNK2005错误:already defined in *.obj
- js-sdk invalid signature错误
- # _http_outgoing JS的错误: The header content contains invalid characters
- js报TypeError $(...) is null错误,jquery失效的原因及解决办法
- js报TypeError $(...) is null错误,jquery失效的原因及解决办法
- js报TypeError $(...) is null错误,jquery失效的原因及解决办法
- Cocos2d-x 3.x 异步加载资源和Loading界面
- display:none与visibility:hidden的区别是什么
- 仿Android5.0 Heads-Up风格的Toast提示
- PCB的布局原则
- android4.4以上,实现状态栏颜色设置
- js:有关TypeError: invalid 'in' operand obj的错误
- 福昕阅读器快速删除书签的方法
- Hadoop学习笔记(二)浅谈Hadoop守护进程
- Mybatis简单入门<学习随笔>
- SecureCRT配置
- 程序3——二叉树的前中后层序遍历
- 根据文件相对路径获得文件的绝对路径(windows)
- 被忽略却很有用的html标签
- java 集合类