繁体   English   中英

将ajax响应对象存储在全局变量中—字段丢失

[英]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字段中,我看到字段sourcetarget都是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM