带.each()方法的动态表

时间:2013-07-10 21:02:12

标签: jquery html

我试图通过迭代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.,

1 个答案:

答案 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")