从服务端返回的数据是JSON格式的字符串,在JS端已经转成JSON对象,但是把这个JSON整个赋值给新变量时,页面没有获取到里面的值(值等价于字符串的JSON对象,如["name":"abc"],而不是"["name":"abc"]")
我想把String类型的"{"name":"abc"}"转成Object类型的{"name":"abc"}并赋值给变量Nodes,即 Nodes={"name":"abc"}就好了。
1 $.ajax({ 2 type: "post", 3 url: "JsonHandler.ashx", 4 data: "qmrfrv-btt-rg-=gtr", 5 beforeSend: function () { $("#reg_msg").text("正在提交..."); }, 6 success: function (mydata) { 7 8 var jsonstr = $.parseJSON(mydata); 9 alert(typeof (jsonstr)); 10 alert(jsonstr.toJSONString()); 11 zNodes = jsonstr;//这里是重点,目前值是[Object] 12 }, 13 error: function () { $("#reg_msg").css("color", "red").text("错误!请重试!"); } 14 });
我想得到的是这样的:
1 var nodes= ["Id": 1, 2 "ParentId": 0, 3 "Title": "WindowsAPIs", 4 "Value": null, 5 "IsLeaf": false, 6 "Children": [ 7 { 8 "Id": 2, 9 "ParentId": 1, 10 "Title": "HttpHelper", 11 "Value": "2", 12 "IsLeaf": true, 13 "Children": null 14 }, 15 { 16 "Id": 3, 17 "ParentId": 1, 18 "Title": "HttpHandlper", 19 "Value": "3", 20 "IsLeaf": true, 21 "Children": null 22 }];
而不是 var nodes=[Object]
你的第一层是对象还是数组?
第一层是数组啊~ 用索引访问对象是可以的
@信息时代的缔造者: 你的意思是zNodes = jsonstr,jsonstr还是对象,赋值给zNodes就成了字符串?
@顾晓北: 我的意思是,直接把jsonstr赋给zNodes后,alert(zNodes)是[Object],我想要的是["key":"value"],而不是[Object].有没有什么方法可以获取["key":"value"]。
@信息时代的缔造者: 你这个是对象,直接alert就是object把?获取,你直接遍历获取就行。。。
@顾晓北: 这样的话,实在麻烦,难道没有一个可以直接获取整个对象的方法?我觉得不大可能。谢了。
@信息时代的缔造者: 呵呵,希望你找到,然后在这里回复我一下,让我也知道知道。
f12调试下.....
已调试,得到的值是Object,不是我想要的。
@信息时代的缔造者: 你要的是json对象还是json字符串?
@吴瑞祥: 要的是json整个对象 把整个对象赋值给一个变量,生成一棵树。
要的是:
1 { 2 3 ["key":"Value"] , 4 5 ["key":"Value"] 6 7 }
而不是:
"{
["key":"Value"] ,
["key":"Value"]
}"
@信息时代的缔造者: ...你的基础太差...首先{ ["key":"Value"] , ["key":"Value"] }是错误的,正确的是[ {"key":"Value"} , {"key":"Value"} ]
而且js对象本来就是一个键值对.可以直接用字段名为下标获取值.错误概念太多..不知道从哪里说起.
$.parseJSON()获取到的已经是json对象了。需要什么,直接按对象的方式取就是了。
需要整个JSON对象,但是返回的是Object。
<script>
$(function () {
var str = "{ \"name\":\"test\",\"sex\":\"0\"}";
alert(str);
var obj = JSON.parse(str);
var obj2 = JSON.stringify(str);
alert(typeof (obj));
alert(obj.name);
});
</script>
eval("(" + jsonstr+ ")");
N多人给出的答案是把字符串转成JSON对象,并没有仔细看问题。这个问题解决了,是我的设置方式不正确,zTree里有 关于接受JSON作为数据源的设置。转变一下思维,也许问题就解决了,不过还是感谢回答问题的人,谢谢!!