Javascript错误 - 未定义

Ash*_*Ash 1 javascript jquery json

我正在尝试为图形创建一种格式.当我尝试这样做,我得到一个undefinedconsole.log之前的数据.这是我的代码

$(document).ready(function () {
    var graphData = new Array();
    $.getJSON("ds/js.json", function (Data) {
        dataLength = returnedData.data.length;
        var x = new Array();
        var y = new Array();
        var mytext, dataa, f;
        for (i = 0; i < dataLength; i++) {
            x[i] = Data.data[i].avgPrice;
            y[i] = Data.data[i].numProducts;
        }
        for (var a = 0; a < 6; a++) {
            mytext = "x:" + x[a] + "," + "y:" + y[a] + "}" + "," + "{";
            dataa = dataa + mytext;
        }
        console.log(dataa);
        var f =
            "[{data : [{" + dataa;
        console.log(f);
    });
    drawGraph(graphData);
});
Run Code Online (Sandbox Code Playgroud)

控制台输出:

undefinedx:87.6,Y:85},{X:116.08,Y:61},{X:113.11,Y:49},{X:181.37,Y:65},{X:138.14,Y:74},{ X:66.03,Y:89},X:66.03,Y:89},{

我在这做错了什么?而且我想要a = 5的单独格式,它会阻止最后的",{".

Ant*_*ist 5

当你这样做:

for  (var a=0;a<6;a++){
    mytext = "x:" +x[a] + "," + "y:" +y[a] + "}" + "," + "{" ;
    dataa=dataa+mytext; 
}   
Run Code Online (Sandbox Code Playgroud)

你用dataa和执行字符串连接mytext.然而,在第一次迭代for循环dataa尚未初始化,并且该字符串表示undefined.

声明dataa变量时,请将其初始化为空字符串:

var mytext,dataa = '',f;
Run Code Online (Sandbox Code Playgroud)

另外,重要的是要记住$.getJSON()对数据进行异步请求.如果该drawGraph函数的结果对于函数正确执行是必要的,那么您的代码将不会像您预期的那样起作用(尽管您在问题中发布的内容没有确切的指示,这是这种情况).

$.getJSON()函数将立即完成执行(在启动请求之后),允许drawGraph执行,但不能保证请求将收到响应并且returnedData将发生处理; 事实上,这种可能性很小,不会发生.