2016-10-03 18 views
2

forループを使用して配列から値を取得しようとしていて、JSON URLに挿入しようとしています。ここにコードがあります。配列を反復処理して値をJSON URLに挿入

myConnector.getData = function(table, doneCallback) { 
    datasetWebId.forEach(function(v) { 
     var webId = (v); 
     $.getJSON("https://www.twdc/api/" + webId + "/recorded?starttime=*-3d&endtime=*", function(resp) { 

      tableData = []; 
      resp.Items.forEach(function(item) { 
       item.Items.forEach(function(subItem) { 
        tableData.push({ 
         'name': item.Name, 
         'Timestamp': subItem.Timestamp, 
         'Value': subItem.Value, 
         'Path': item.Path 
        }); 
       }); 
      }); 

     }); 
     table.appendRows(tableData); 
     doneCallback(); 
    }); 

}; 

実行時に、最初のループにヒットし、残りの部分をスキップします。 datasetWebId配列に値があるため、問題はありません。誰かが場所から何かを見つけられますか?

+1

あなたのjsonを表示してください –

+0

Jsonはループがあるときに何か問題がなく、Webidがirkに入れられる方法があります。それはそれなしで動作するので。 @PradyutManna – llerdal

+0

コンソールに何かエラーがありますか? @llerdal –

答えて

2

datasetWebId配列の最初の項目の最後にdoneCallbackを呼び出しました。これは決して別の繰り返しを持たない理由です。

0

ここではいくつかのことが起こっています。まず、「datasetWebId」が何であるかはわかりません。これは、各AJAXリクエストを送信するために繰り返す配列ですが、1つ後に終了する場合は、実際に反復するデータがあることを確認するために、実行前にこの長さをconsole.logにする必要があります。

秒。あなたは3つの(!)ネストされたfor-loopsを持っています。これは奇妙なデータリークの問題があることにはまったくショッキングなことではありません。これは、あまりにも多くのオーバーネストの大きな兆候の1つです。心配しないで、我々はすべてそこにいた。独立してテストすることができる別々の関数ですべての関数を投げ、一度に1つずつ実行してください。そして、AJAXのシンボルの火災応答が適切に機能していることを確認するまで、何もしないでください。

さて、あなたはこれを持っています。可能であれば、その配列に関する詳細情報を投稿してください。私は、きちんとした解釈であなたを送ってくれるでしょう。

関連する問題