在jQuery中从数组创建html表

Posted

技术标签:

【中文标题】在jQuery中从数组创建html表【英文标题】:Create html table in jQuery from array 【发布时间】:2016-05-05 05:24:35 【问题描述】:

我的数据库中有一组元素。我使用 ajax(POST 过程)来获取它。现在我想创建一个包含这些元素的表。我不完全知道如何在 jQuery 中做到这一点。我有这个:

$.post('script.php',login: '1', 'json').done(function(data)  
    results = ''; 
    data.table.forEach(function(row)
        results += '<tr><td>' + row.name + '</td><td>' + row.lastname + '</td><td>' + row.data + '</td></tr>';
    );
    $('#MyTable tbody').html(results);
);

我的脚本是这样的:

header('Content-Type: application/json');
...
$result=mysql_query($query); 
$table = array();
while($row=mysql_fetch_array($result))
$table[] = $row;

$data['table'] = $table;
echo json_encode($data);

编辑: 我纠正了我的错误,现在打开表格时控制台出现错误。它显示:

TypeError: data.forEach is not a function

有人知道这句话的结构应该是什么样子吗?

【问题讨论】:

什么不起作用? 嗯,什么都没有显示...我不确定出了什么问题。我的脚本数组如下: Array ( [0] => 2 [id] => 2 [1] => Roberto [name] => Roberto [2] => Robertos [lastname] => Robertos [3] => 2016-01-27 22:10:18 [数据] => 2016-01-27 22:10:18) 似乎不是该数组中的属性table。试试data.forEach(..。整个 json 结构的样本会有所帮助 检查浏览器控制台是否有错误 错字:row.lastanme 应该是row.lastname。但这不会导致这个问题。 【参考方案1】:

我看到你说你的php脚本有数据,所以我猜问题应该是 这一行:

echo json_encode();

应该是

echo json_encode($data);

在你的javascript中我会这样做

$.post('script.php',login: '1', function(data)  
results = ''; 
$.each(data.table, function(idx, row)
    results += '<tr><td>' + row.name + '</td><td>' + row.lastanme + '</td><td>' + row.data + '</td></tr>';
);
$('#MyTable tbody').html(results);

);

【讨论】:

天哪,谢谢,但这并不能解决整个问题。现在,当我更正我的脚本时,当我打开表格时,我在控制台中出现错误:TypeError: data.forEach is not a function 有人知道它的结构应该是什么样子吗? 感谢您的帮助,但仍然没有显示任何内容(但现在控制台中没有错误) 好吧,这里有 2 个可能的问题,1. 你没有从 php 脚本得到响应,看看你用 console.log(data) 得到了什么 2. 如果有响应,看看你有什么$.each() 循环之后的 console.log(results) 好的,我解决了。问题出在表的名称上……非常感谢老兄。

以上是关于在jQuery中从数组创建html表的主要内容,如果未能解决你的问题,请参考以下文章

在 jquery submitHandler 中从 input=file 传递值 [重复]

在Google Apps脚本和javascript / jQuery中从另一个对象或数组构建对象

在 jQuery 中从 JSON 值创建字符串

如何使用 JS/JQUERY 从数组创建特定表

在JavaScript / jQuery中从列中获取所有值而不重复

在 jQuery 中从 JSON 加载 HTML 控件(即 Ajax serialiseArray 的逆向)