D3 意外值转换,不接受变量
D3 unexpected value translate, won't accept variable
我有一个奇怪的错误,D3 不会获取变量引用的 JSON 数据,但如果我通过控制台日志将其打印出来并将其复制粘贴到同一变量中,D3 会获取它。
所以这个 JSON 源不起作用:
function reformat(data) {
var jsonObject = JSON.parse(data, function(k, v) {
return (typeof v === "object" || isNaN(v)) ? v : parseInt(v, 10);
});
var treeData = (JSON.stringify(makeTree(jsonObject), null, 4));
//etc code for D3
}
但是,如果我从字面上通过控制台打印它,并声明如下:
treeData = [
{
"id": 1,
"name": "Start",
"children": [
{
"id": 2,
"name": "Decision A",
"children": [
{
"id": 4,
"name": "Possibility A-1",
"children": [
{
"id": 8,
"name": "Consequence A-1"
}
]
},
{
"id": 5,
"name": "Possibility A-2",
"children": [
{
"id": 9,
"name": "Consequence A-2"
}
]
}
]
},
{
"id": 3,
"name": "Decision B",
"children": [
{
"id": 6,
"name": "Possibility B-1",
"children": [
{
"id": 10,
"name": "Consequence B-1"
}
]
},
{
"id": 7,
"name": "Possibility B-2",
"children": [
{
"id": 11,
"name": "Consequence B-2"
}
]
}
]
}
]
}
];
突然工作正常。我无法继续复制和重新声明变量。如果输出相同,为什么不接受它?
该函数在加载网页时被调用一次:
function reqListener () {
console.log(this.responseText);
}
var oReq = new XMLHttpRequest();
oReq.onload = function() {
reformat(this.responseText);
};
oReq.open("get", "getData.php", true);
oReq.send();
为什么要串化 JSON 并将其传递给 treeData?
而不是
var treeData = (JSON.stringify(makeTree(jsonObject), null, 4));
这样做
var treeData = makeTree(jsonObject);
这应该有效。
相关文章:
- autocomplete不接受源的json对象
- Jquery-每个循环不更新变量
- 不接受0-0-0的正则表达式是什么
- Javascript Regexp-不接受空格,但应该接受
- mandrill合并标记不接受变量值
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- Moment.js不接受变量作为参数
- 节点.JS - 文件名不接受变量
- Chrome扩展:storage.set()不接受变量作为关键字
- jquery不接受带引号的变量
- 绘制 SVG 拉斐尔路径会出错并且不接受变量
- Javascript nodeValue 不接受新变量
- YUI 拇指滑块不接受变量和表达式
- 谷歌图不接受PHP变量
- AngularJS ng控制器指令不接受javascript中的变量(作用域函数),也不给出任何错误
- javascript函数不接受传入的Object变量
- jQuery .animate()不接受变量
- IE11不接受字符串(变量)作为localStorage.setItem()的参数
- 为什么javascript中的函数不接受未定义的变量
- D3 意外值转换,不接受变量