将ajaxed JSON附加到现有表

时间:2011-05-24 14:23:44

标签: javascript jquery json

http://jsfiddle.net/mplungjan/LPGeV/

我在这里缺少什么,是否有更优雅的方式来获取响应数据?

$.post('/echo/json/',{
    "json": JSON.stringify({
      "rows": [
        {
        "cell1":"row 2 cell 1",
        "cell2":"row 2 cell 2"
        },
        {
        "cell1":"row 3 cell 1",
        "cell2":"row 3 cell 2"
        }        
    ]})
    },
    function(response) {
       $response = JSON.parse(response)
       $response.each(function() { // rows
         var row = '<tr><td>'+$(this).cell1+'</td><td>'+$(this).cell2+'</td></tr>';
         $('#tableID').append(row);
      });                             
    }
);

更新:这有效:

function(response) {
   $.each(response.rows,function() { // rows
       var row = '<tr><td>'+this.cell1+'</td><td>'+this.cell2+'</td></tr>';
       $('#tableID').append(row);
    });                             
}

2 个答案:

答案 0 :(得分:3)

您应该将数据类型设置为'json'(或使用`.getJSON()',然后jQuery将为您解析答案。(编辑:实际上jQuery已经将响应识别为JSON并为您解析,所以你不要无论如何都需要解析。)

由于响应数据是纯JavaScript对象,因此有意义不是将它包装在jQuery中,而是使用jQuerys“其他”.each()方法:

$.post('/echo/json/',{
    dataType: "json",
    "json": JSON.stringify({
      "rows": [
        {
        "cell1":"row 2 cell 1",
        "cell2":"row 2 cell 2"
        },
        {
        "cell1":"row 3 cell 1",
        "cell2":"row 3 cell 2"
        }        
    ]})
    },
    function(response) {
       $.each(response.rows, function() {
         var row = '<tr><td>'+ this.cell1+'</td><td>'+ this.cell2+'</td></tr>';
         $('#tableID > tbody').append(row);
      });                             
    }
);

编辑:您需要遍历response.rowsresponse。而且Geoff也是正确的。

http://jsfiddle.net/LPGeV/15/

答案 1 :(得分:2)

我无法加载jsfiddle,但你想要附加到tbody,而不是表。

$('#tableID > tbody:last').append(row);