首页 新闻 会员 周边

ajax 获取后台传递的json数据遍历的时候总是弹出undefined????

0
悬赏园豆:5 [待解决问题]

后台能正确获取数据并且拼接成了json格式的,

前台js代码:

在alert(value.name)的时候就弹出undefined!请问这是什么问题???

hslgmq的主页 hslgmq | 初学一级 | 园豆:29
提问于:2016-01-26 14:30
< >
分享
所有回答(10)
0

你data里面的数据结构是怎么样的?data.d,是一个数组结构,data.d[0].name才有值...   你的each里面的value是遍历的data的每一个元素,,结构好像不对。。    value[0].name

杰哥*糖鸡屎 | 园豆:59 (初学一级) | 2016-01-26 14:50

不行的

支持(0) 反对(0) hslgmq | 园豆:29 (初学一级) | 2016-01-26 15:04

@hslgmq: 贴Q私聊

支持(0) 反对(0) 杰哥*糖鸡屎 | 园豆:59 (初学一级) | 2016-01-26 15:21

@hslgmq:JSON格式,确实不规范。。   必须是双引号的

支持(1) 反对(0) 杰哥*糖鸡屎 | 园豆:59 (初学一级) | 2016-01-26 15:23
0

不知道你的后台设置了响应体的类型没:content-type:application/json

或者在前台用JSON.parse(data)转成有效的json格式。

逐影 | 园豆:982 (小虾三级) | 2016-01-26 14:52

我已经指定数据类型是json,干嘛还要parse转,这样肯定报错了就

支持(0) 反对(0) hslgmq | 园豆:29 (初学一级) | 2016-01-26 15:01
0

$.each();这个方法是 网页中存在对象,才可以用。应该用 for循环吧

唯我独萌 | 园豆:537 (小虾三级) | 2016-01-26 14:58

嗯?没懂!

支持(0) 反对(0) hslgmq | 园豆:29 (初学一级) | 2016-01-26 15:02

$.each(data,function(n,value)){} 换成 for循环

支持(0) 反对(0) 唯我独萌 | 园豆:537 (小虾三级) | 2016-01-26 15:03

@背叛的冲刷: 不行,试过了

支持(0) 反对(0) hslgmq | 园豆:29 (初学一级) | 2016-01-26 15:04

data=eval("("+data+")")

支持(0) 反对(0) 唯我独萌 | 园豆:537 (小虾三级) | 2016-01-26 15:06

@背叛的冲刷: 后台传递的本来就是json类型格式的,为什么还要用eval()??

支持(0) 反对(0) hslgmq | 园豆:29 (初学一级) | 2016-01-26 15:07
0

你在alert(data.d);后面加上一句话:

data.d = eval(data.d);

刘宏玺 | 园豆:14020 (专家六级) | 2016-01-26 15:07

下面each遍历的时候怎么弄?

支持(0) 反对(0) hslgmq | 园豆:29 (初学一级) | 2016-01-26 15:08

@hslgmq: 只需要加这句话,其余的不用动

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-01-26 15:09

@刘宏玺: 这样下面html拼接出来的全是undefined

支持(0) 反对(0) hslgmq | 园豆:29 (初学一级) | 2016-01-26 15:12

@hslgmq: 其实主要问题在于你的json不标准,你的json里面用的是单引号,然后data.d竟然还解析成了string类型,你还是先研究下json吧

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-01-26 15:15

@刘宏玺: 单引号不行吗

支持(0) 反对(0) hslgmq | 园豆:29 (初学一级) | 2016-01-26 15:17

@hslgmq: http://baike.baidu.com/link?url=xgG7AYeYDJyJMClW7HIMRRB-vHsRsHE3g-bfhs23mtcHu-f0VWTSVXDrG_Fdp7LFYO07KTF431XpMtPxdnByu_

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-01-26 15:19

@刘宏玺: 最开始key\value我也用过双引号啊,遍历的时候还是undefined

支持(0) 反对(0) hslgmq | 园豆:29 (初学一级) | 2016-01-26 15:37

@hslgmq: 你把返回的json在线测试一下,看看有问题没有http://www.bejson.com/

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-01-26 15:38

@刘宏玺: 嗯,单引号解析不通过。

支持(0) 反对(0) hslgmq | 园豆:29 (初学一级) | 2016-01-26 15:49
0

首先你不是标准的json,取出的string用JSON.parse(data.d)之后console.log(),看看是不是object数组

MrNice | 园豆:3450 (老鸟四级) | 2016-01-26 15:26
0

后天必须用反斜杠表示双引号,规范json的格式。或者,在前台使用eval("("+result+")")转换成一个JavaScript对象。

谋明 | 园豆:204 (菜鸟二级) | 2016-01-26 17:24
0

你这返回的不是标准的json格式,json格式是以{}包括的,你这多了[],你吧[]去掉然后JSON.parse试试

webaspx | 园豆:1973 (小虾三级) | 2016-01-27 10:10
0

chartJson["M1"] 试一下这种写法

zklve2 | 园豆:3 (初学一级) | 2016-01-27 10:55
0

你这里的循环用的是$.each(data,function(n,value)){} 

看看这个你循环的是data ,而你的数据在data.d中,当然找不到了 ,

你换成$.each(data.d,function(n,value)){} 试试看! 推荐技术类公众号CodeL

李伟-CodeL | 园豆:87 (初学一级) | 2016-03-24 22:48
0

var row = eval(data);
for (var i = 0; i < row.length; i++) {
  var addOption = document.createElement("option");
  addOption.text = row[i]["model"];
  addOption.value = row[i]["model"];
  document.getElementById("ddlModel").add(addOption);
}

冷战 | 园豆:211 (菜鸟二级) | 2016-11-11 13:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册