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);
});
}
答案 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.rows
和response
。而且Geoff也是正确的。
答案 1 :(得分:2)
我无法加载jsfiddle,但你想要附加到tbody,而不是表。
$('#tableID > tbody:last').append(row);