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;}}


 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝给蚂蚁咬了怎么办 脚被蚂蚁咬肿了怎么办 孩子被蚂蚁咬了怎么办 家住高层有老鼠怎么办 久看手机眼睛疼怎么办 晚睡眼睛疼了怎么办 眼睛肿了有点痛怎么办 眼角两边长痘痘怎么办 坐动车行李超重怎么办 海康威视黑屏了怎么办 备孕喝酒抽烟了怎么办 鼻炎鼻子不通气怎么办速效办法 2岁宝宝智力落后怎么办 六个月宝宝尖足怎么办 3个月宝宝尖足怎么办 2岁宝宝发育慢怎么办 2岁宝宝便秘怎么办呀 2岁宝宝老是便秘怎么办 宝宝4岁不说话怎么办 宜家柜子味道重怎么办 家里有小飞虫怎么办呀 汽车里进老鼠了怎么办 老鼠跑到车里了怎么办 我的小车有老鼠怎么办 车里面进了老鼠怎么办 街电充电宝丢了怎么办 充电宝充不了电怎么办 脚裸扭伤肿了怎么办 大货车电瓶亏电怎么办 货车电瓶被偷了怎么办 小乌龟尾巴断了怎么办 长青春痘怎么办简单小妙招 一关灯就有蚊子怎么办 狗狗误食蟑螂药怎么办 泰迪误食蟑螂药怎么办 猫咪吃了蟑螂药怎么办 狗把蟑螂药吃了怎么办 猫吃了蟑螂诱饵怎么办 猫吃了蟑螂中毒怎么办 孕妇胃烧的难受怎么办 6个月孕妇胃难受怎么办