Javascript错误 - 未定义

时间:2013-05-08 14:38:09

标签: javascript jquery json

我正在尝试为图表创建格式。当我尝试这样做时,我会在数据前收到undefined console.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);
});

控制台输出:

  

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的单独格式,它会停止“,{”到最后。

3 个答案:

答案 0 :(得分:5)

执行此操作时:

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

您正在使用dataamytext执行字符串连接。但是,在for循环的第一次迭代中,dataa尚未初始化,并且其字符串表示为undefined

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

var mytext,dataa = '',f;

顺便说一句,重要的是要记住$.getJSON()发出异步数据请求。如果该调用的结果是drawGraph函数正确执行所必需的,那么您的代码将不会像您预期的那样起作用(尽管您在问题中发布的内容没有确切的指示,这是情况)。

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

答案 1 :(得分:1)

您不应该通过字符串连接来构建对象。我建议实际建立一个像这样的对象数组:

var dataa = [];
for (var a = 0; a < 6; a++) {
    var newObj = {x: + x[a], y: + y[a]};
    dataa.push(newObj);
}

然后生成您目前拥有的f

var f = JSON.stringify([{data: dataa}]);

答案 2 :(得分:0)

    dataa = dataa + mytext;
--------------^

最初是undefined

你需要这样做 -

 var mytext, dataa = "", f;