[英]Store ajax response object in global variable — Fields get missing
我正在Grails中实现一个异步网页,在其中我调用一个控制器并将响应呈现为D3.js网络。 我将对象存储到全局变量中以备将来使用。 返回数据时,该函数运行良好。 但是,当我稍后尝试使用该对象时,我发现某些字段变得undefined
。
var similar;
function asynchroNetwork() {
var jsonData = $.ajax({
url: "${createLink(controller:'environment', action:'asynchro')}",
dataType: "json",
async: true
}).done(function(jsonData) {
console.log(jsonData);
//console.log(jsonText);
document.getElementById("result").innerHTML="Done";
console.log(jsonData.all);
//set global variable
similar=jsonData;
console.log("The object got");
console.log(similar);
draw();
});;
}
function draw(){
console.log(similar);
//draw the network based on object
}
控制器返回以下JSON:
{
"\u521B\u4E1A" : {
"nodes" : [{
"group" : 1,
"name" : "\u6c88\u9633\u8f9b\u98962\u4e16"
}
],
"links" : []
},
"all" : {
"nodes" : [{
"group" : 1,
"name" : "qwe25322570"
}, {
"group" : 1,
"name" : "\u660e\u5fb7\u7b03\u884c"
}, {
"group" : 1,
"name" : "\u6c88\u9633\u53ef\u4e50"
}, {
"group" : 1,
"name" : "\u6c88\u9633\u5f6d\u79c0\u8363"
}, {
"group" : 1,
"name" : "\u6c88\u9633\u738b\u632f\u534e"
}, {
"group" : 1,
"name" : "\u6c88\u9633\u8f9b\u98962\u4e16"
}
],
"links" : [{
"value" : 1.0,
"target" : "\u6c88\u9633\u8f9b\u98962\u4e16",
"source" : "\u660e\u5fb7\u7b03\u884c"
}, {
"value" : 1.0,
"target" : "\u6c88\u9633\u8f9b\u98962\u4e16",
"source" : "qwe25322570"
}
]
}
}
在draw()
函数中,它使用similar[all]
绘制图形。 但是在links
字段中,我看到字段source
和target
都是undefined
,而nodes
中的所有字段都很好。
我认为编码不是原因,因为nodes
在字段中也包含UTF8字符,但没有一个丢失。 从异步函数将对象传递回之后, similar
的对象可以,但是下次调用draw()
,我可以看到字段links
undefined
。
有谁知道可能是这个问题的原因吗? 我想这可能与嵌套字段有关。
您是否尝试过将数据作为参数传递给draw函数? 如果不是,则:
在您的ajax回调中:
similar = jsonData;
draw(similar) //pass the json
绘制功能:
function draw(json) {
console.log(json);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.