+ -
当前位置:首页 → 问答吧 → 如何给指定格式数据赋值(json+Ajax)

如何给指定格式数据赋值(json+Ajax)

时间:2011-04-27

来源:互联网

现已从服务端返回了json格式的数据,用alert没有问题。
for (var i = 0 ; i < datareturn.length ; i ++)
{
//依次访问数组元素,数组元素是JSON格式的对象,访问其name属性
result += datareturn[i].name + "<br />";
}
但现在的客户端数据格式如下:
data: {
  nodes: [ { id: "1", label: "1" },
  { id: "2", label: "2" }]
}
请问,如何才能将json格式的数据中的i赋给id,datareturn[i].name的数据赋给label?怎样在一个循环内赋值?
   

作者: soccerfan   发布时间: 2011-04-27

eval(json)

作者: toury   发布时间: 2011-04-27

还是写全吧
JScript code

<script>
var json='{data:{nodes: [ { id: "1", label: "1" },{ id: "2", label: "2" }]}}'
json=eval("("+json+")")
var datareturn=json.data.nodes

var result=''
for (var i = 0 ; i < datareturn.length ; i ++){
//依次访问数组元素,数组元素是JSON格式的对象,访问其name属性
result += datareturn[i].id+ "<br />";
}
alert(result)
</script>


作者: toury   发布时间: 2011-04-27

谢谢楼上的回复,不过我想要的是将返回的json数据向data中的id和label循环赋值,也就是id:"1",label:"2"中双引号括起来的数值要用一个循环赋进去。

作者: soccerfan   发布时间: 2011-04-27

我想要的是类似于:
for (var i = 0 ; i < datareturn.length ; i ++){
data: {
  nodes: [ { id: i, label: datareturn[i].name }

}
但这样写执行不了。

作者: soccerfan   发布时间: 2011-04-27

哦,我理解错了,不好意思。看这个:HTML code

<script>
var o={data:{nodes: [ { id: "1", label: "1" },{ id: "2", label: "2" }]}}
var a=o.data.nodes, s='';
for (var i = 0 ; i < datareturn.length ; i ++){
  //依次访问数组元素,数组元素是JSON格式的对象,访问其name属性
  s="{id:\""+i+"\",label:\""+datareturn[i].name+"\"}";
  //这里示例是追加数据。(如果不是追加,你先把数组a清空)
  a.push(eval("("+s+")"));
}
alert(a.length)
</script>

作者: toury   发布时间: 2011-04-27

谢谢楼上!算是看明白了,不过这方面是新手,还要请教:数组a如何清空?最终如何得到:
data:
  nodes: [ { id: "1", label: "1" },
  { id: "2", label: "2" },
  { id: "3", label: "3" },
  { id: "4", label: "4" },
  .....
  ]
数据格式就是这样的一行一行的。

作者: soccerfan   发布时间: 2011-04-27

清空数组很方便:
var a=o.data.nodes, s='';
//加这句就OK了:
a.length=0;

作者: toury   发布时间: 2011-04-27