2016-12-13 2 views
0

Я пытаюсь написать короткий скрипт, чтобы получить некоторые данные. Идея заключается в том, что вместо того, чтобы писать много файлов JavaScript, и мне всегда нужно жестко указать идентификатор в ссылке, я думал, что нужно вставить переменную в ссылку. Теперь у меня есть проблема, я вижу только последнее значение моего var, поскольку выглядит, что var будет перезаписываться все время вместо простого добавления идентификатора к выходу. Я надеюсь, что вы можете мне помочь.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

Проделанная функция doneCallback() бесполезна, если она не находится в асинхронной части $ .getJSON(). – 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

Я пробовал, но пока отображается только последний var – cyberoner1

+0

Где этот последний вар-шоу? Кроме того, вы убедились, что не получили кешированную версию JavaScript, которую вы редактировали? I.e., запомните Ctrl + F5 (firefox), чтобы убедиться, что ваш новый код запущен, а не кешированная копия. – varlogtim

+0

Это одна проблема, но отнюдь не единственная. Основная проблема заключается в том, как он обрабатывает последовательность асинхронных вызовов. –

1

его вопрос, что весь ваш код не в цикл, ваш цикл только одна линия

использование

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 переписывает мои данные», и ответ для этого, почему его переписал или почему используется только последний идентификатор. – Viplock

+0

Ну, это первый раз, когда мне нужно написать скрипт java, так что извините, если я что-то пропущу или не понимаю правильно. sxript - это веб-соединитель данных, который я использую для Tableau. Я установил симулятор на своем ПК, где я могу запустить скрипт, чтобы увидеть результат. И все время, когда я запускаю этот скрипт, я вижу в качестве вывода ID 6697. Я переключил идентификаторы, чтобы убедиться, что это проблема перезаписи, и результат был последним ID снова. Вот почему я думаю, что переписываю данные – cyberoner1

Смежные вопросы