我试图通过迭代JSON对象中的key:value
对来创建动态表。
目前我在对象中只有一对,所以我的表应该只有一个包含两个<td>
单元格的表行,但是我每行有30多行,其中两个单元格包含"undefined"
as文本。不确定是什么导致了这一点。
HTML:
<div class="posts">
<table><h2>Posts from My Leaders</h2>
<tr>
<th></th>
<th></th>
</tr>
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>
</div>
jQuery的:
var gsd = $.post('forumquery_test.php', {'postarray' : postarray}, function(result, success) {
console.log(result);
var json = $.parseJSON(result); //[{"Username":"stan","Post_txt":"Hi, this is Stan"}]
console.log(json[0].Post_txt); //Hi, this is Stan
console.log(json[0].Username); //stan
$.each(result, function(index, value) {
var username = value.Username;
var posttxt = value.Post_txt;
var newrow = '<tr><td>'+username+'</td><td>'+posttxt+'</td></tr>';
$('.posts table').append(newrow);
})
})
结果:
Username Post
undefined undefined
undefined undefined
etc., etc.,
答案 0 :(得分:1)
首先,将json数据类型添加到.post调用
$.post('url',{data:data},successhandler,"json")
接下来,删除$.parseJSON
行。利润。你循环遍历一个字符串而不是你解析的json,这将解释你所看到的50行undefined(你的json字符串中有50个字符)
var gsd = $.post('forumquery_test.php', {
'postarray': postarray
}, function (result, success) {
console.log(result);
$.each(result, function (index, value) {
var username = value.Username;
var posttxt = value.Post_txt;
var newrow = '<tr><td>' + username + '</td><td>' + posttxt + '</td></tr>';
$('.posts table').append(newrow);
})
},"json")