2016-12-13 54 views
0

我想写一个简短的脚本来获取一些数据。这个想法是,而不是写很多的JavaScript文件,我总是需要在链接中对ID进行硬编码,我认为必须可以在链接中插入一个变量。现在我遇到了问题,我只能看到我的var的最后一个值,因为它看起来像var会被所有时间覆盖,而不是简单地将ID添加到输出。我希望你能帮助我。javascript覆盖我的数据

下面是代码:

myConnector.getData = function(table, doneCallback) { 
    var date = new Date(); 
    edate = date.toISOString().slice(0,10) + "-23-59-59"; 

    var ids = ["3775", "6697"] 
    for (i = 1; i < ids.length; i++) 
    var id_temp = ids[i]; 
    { 

    $.getJSON("https://****/api/historicdata.json?id="+id_temp+"&avg=0&sdate=2016-12-12-00-00-00&edate="+edate+"&username=***&passhash=****", function(resp) { 

     var feat = resp.histdata, 
     tableData = []; 

     // Iterate over the JSON object 
     //String id = UUID.randomUUID().toString(); 
     for (var j = 0, len = feat.length; j < len; j++) { 
     tableData.push({ 
      //"no"  : j, 
      "ids" : id_temp, 
      "datetime": feat[j].datetime, 
      "value": feat[j].value, 
      "value_raw": feat[j].value_raw, 
      "coverage": feat[j].coverage, 
      "coverage_raw": feat[j].coverage_raw 


     }); 
     } 

     table.appendRows(tableData); 

    }); 

    }; 
    doneCallback(); 
}; 
+3

请缩进您的代码LY。 – Tomalak

+2

只要不在异步$ .getJSON()部分中,doneCallback()就没用了。 – Lain

回答

2

的问题是,id_temp只被设定的最后一个值,因为{是放错了地方。

此:

var ids = ["3775", "6697"] 
for (i = 1; i < ids.length; i++) 
    var id_temp = ids[i]; 

{ 

应该是:

var ids = ["3775", "6697"] 
for (i = 1; i < ids.length; i++) 
{ 
    var id_temp = ids[i]; 
    //... rest of loop ... 
+0

我试过了,但还是只显示最后一个变量 – cyberoner1

+0

最后一个变量显示在哪里?另外,你是否确定你没有得到你编辑的JavaScript的缓存版本?即,请记住Ctrl + F5(firefox)以确保您的新代码正在运行,而不是缓存副本。 – varlogtim

+0

这是一个问题,但决不是唯一的问题。根本问题是他如何处理异步调用序列。 –

1

它是整个代码是不是在for循环的问题,您的for循环只有一个行

使用

var ids = ["3775", "6697"] 
for (i = 1; i < ids.length; i++) 
{ 
    var id_temp = ids[i]; 
    $.getJSON("https://****/api/historicdata.json?id="+id_temp+"&avg=0&sdate=2016-12-12-00-00-00&edate="+edate+"&username=***&passhash=****", function(resp) { 
+0

这是一个问题,但决不是唯一的问题。 –

+0

我同意你的看法,但是由OP提出的问题是“javascript覆盖我的数据”,答案就是这样,为什么它被覆盖或为什么只使用最后一个id。 – Viplock

+0

那么,这是我第一次脚本java,所以很抱歉,如果我错过了一些东西或不正确理解。 sxript是我用于Tableau的Web数据连接器。我在我的PC上安装了一个模拟器,可以运行脚本查看输出。而且所有的时候我正在运行这个脚本,我将其视为一个输出ID 6697.我切换Ids只是为了确保它是一个覆盖问题,结果是最后一个ID再次显示。这就是为什么我在考虑重写数据 – cyberoner1