0

私はjson配列を次のように返します

{"id":16,"minutes":146}
{"id":17,"minutes":137}
{"id":18,"minutes":123}
{"id":22,"minutes":84}

json配列IDがtdidと等しいテーブルtbodytd内のjson配列の上にレンダリングし、tdタグ内の分を表示しようとしています

たとえば、json id:16minute:146で表示します<td id="16">146</td>

    <table>
      <thead>
        <tr>
          <th>op</th>
          <th>Minutes</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>op1</td>
          <td id="16">0</td>
        </tr>
        <tr>
          <td>op2</td>
          <td id="17">0</td>
        </tr>
        <tr>
          <td>op3</td>
          <td id="18">0</td>
        </tr>
<!--....and goes on -->
      </tbody>
    </table>

js

$.ajax({ url: statUrl, type: 'POST',
  data: {
      begin: begin,
      end: end
  },
  success: function(data){


  }
});
4

5 に答える 5

1

JSONは無効です。これは、1つのオブジェクトのみを表す必要があり、有効なバージョンのJSONになります。

[{"id":16,"minutes":146},
{"id":17,"minutes":137},
{"id":18,"minutes":123},
{"id":22,"minutes":84}]
于 2012-07-17T23:12:08.930 に答える
0

提案された固定json配列

{
 "25":72.3833,
 "17":116.3167,
 "16":25.75,
 "34":28.3333,
 "29":136.8831,
 "19":40.9166,
 "32":43.6,
 "22":83.9001
}

およびjs

$.getJSON(statUrl, {begin: begin, end: end}, function(data) {

      $.each(data, function(key, val) {
          $('#op_' + key).text(Math.ceil(val));//also fixed td id
      });
});

期待通りの結果が得られました。御時間ありがとうございます。

于 2012-07-18T01:56:30.613 に答える
0

データIDが既存のDOM要素IDに直接対応している場合は、かなり簡単なはずです。

for (var i = 0;  i < data.length; i++) {
   $('#' + data[i].id).text(data[i].minutes);
}

これはjQueryofcを使用しています。

于 2012-07-17T23:13:38.750 に答える
0

phpでjson_decode($ json、true)を使用して、jsonを配列に変換し、その要素をループしてテーブルを作成できます。

クライアント側で実行する場合は、table、tr、およびtd要素を手動で作成し、それらにデータを入力する必要があると思います。ExtJSには、このためのグリッドが用意されています。

サーバー側の方が簡単です。

于 2012-07-17T23:19:54.013 に答える
0

ここでjsFiddleを作成しました:http://jsfiddle.net/5pKjW/11/ Musa が述べたように、投稿したJSONは無効であり、すべてのオブジェクトを含む配列である必要があります。次のコードは、基本的に成功コールバック内で実行する必要があるものであり、の data代わりに使用しresultます。私がしているのは、テーブルを作成し、配列のすべての要素に行を追加してから、テーブル全体をDOMの要素に追加することです。

var result = [{"id":16,"minutes":146},{"id":17,"minutes":137},{"id":18,"minutes":123},{"id":22,"minutes":84}];
var $table = $('<table><thead><tr><th>op</th><th>Minutes</th></tr></thead>'), 
    $tbody = $('<tbody>').appendTo($table),
    i;
for (i = 0; i < result.length; i++){
    $tbody.append('<tr><td>op' + (i+1) + '</td><td id="' + result[i].id + '">0</td></tr>');
}
$table.appendTo('#container');

TJ Crowderがコメントしたように、有効なHTML4id属性は数字で始めることはできません。私があなたなら、接頭辞として文字列(<td id="prefix' + result[i].id + '">0</td>)を付けます。

MrOBrianは、レンダリングエンジンの使用を提案しました。たぶんこのような単純なケースで、他の場所にレンダリングエンジンが必要ない場合、それはやり過ぎですが、将来もっと複雑なものが必要な場合は、それを検討する価値があります。

于 2012-07-17T23:47:21.160 に答える