use*_*755 2 javascript json loops
我有一个 JSON 数组,我想循环遍历它来创建一个表。
TITLE 等当然是表格的标题以及放置在下面的相关数据。
PHP 文件的 JSON 结果
[
{
"TITLE":"Empire Burlesque",
"ARTIST":"Bob Dylan",
"COUNTRY":"USA",
"COMPANY":"Columbia",
"PRICE":"10.90",
"YEAR":"1985"
},{
"TITLE":"Picture book",
"ARTIST":"Simply Red",
"COUNTRY":"EU",
"COMPANY":"Elektra",
"PRICE":"7.20",
"YEAR":"1985"
}
]
Run Code Online (Sandbox Code Playgroud)
PHP
$filterText = "1985";//$_REQUEST["text"];
$filename = "xml/xml_cd.xml";
$filterHeading = "YEAR";
$filterText = "1985";//$_REQUEST["text"];
$file = simplexml_load_file($filename);
$children = $file->children();
$firstchild = $children[0];
$node = $firstchild->getName();
$result = $file->xpath('//'.$node.'['. $filterHeading . '/text()="'.$filterText.'"]');
$jsondata = json_encode($result,true);
print_r($jsondata);
Run Code Online (Sandbox Code Playgroud)
我相信解决方案应该是在 javascript 中,但无法完全弄清楚如何解决该问题,因为对 JSON 和 JAVASCRIPT 很陌生。
像这样 - 使用 jQuery,因为它使 Ajax 和后续处理变得更加简单 - 请注意,您不必解析服务器上的 XML 并创建 JSON。您可以只将 XML 提供给 jQuery 并进行类似的处理:
// here is your success from AJAX
var tbody = $("<tbody />"),tr;
$.each(data,function(_,obj) {
tr = $("<tr />");
$.each(obj,function(_,text) {
tr.append("<td>"+text+"</td>")
});
tr.appendTo(tbody);
});
tbody.appendTo("#table1"); // only DOM insertion
Run Code Online (Sandbox Code Playgroud)
如果要指定每个字段:
tr
.append("<td>"+obj.TITLE+"</td>")
.append("<td>"+obj.ARTIST+"</td>")
Run Code Online (Sandbox Code Playgroud)
我使用的标记在哪里
<table id="table1">
<thead></thead>
</table>
Run Code Online (Sandbox Code Playgroud)
结果:
// here is your success from AJAX
var tbody = $("<tbody />"),tr;
$.each(data,function(_,obj) {
tr = $("<tr />");
$.each(obj,function(_,text) {
tr.append("<td>"+text+"</td>")
});
tr.appendTo(tbody);
});
tbody.appendTo("#table1"); // only DOM insertion
Run Code Online (Sandbox Code Playgroud)
tr
.append("<td>"+obj.TITLE+"</td>")
.append("<td>"+obj.ARTIST+"</td>")
Run Code Online (Sandbox Code Playgroud)
<table id="table1">
<thead></thead>
</table>
Run Code Online (Sandbox Code Playgroud)
普通JS
const data = [
{ "TITLE": "Empire Burlesque", "ARTIST": "Bob Dylan", "COUNTRY": "USA", "COMPANY": "Columbia", "PRICE": "10.90", "YEAR": "1985" },
{ "TITLE": "Picture book", "ARTIST": "Simply Red", "COUNTRY": "EU", "COMPANY": "Elektra", "PRICE": "7.20", "YEAR": "1985" }];
$(function() {
const thead = $("#table1 thead");
const tbody = $("#table1 tbody");
let tr = $("<tr />");
$.each(Object.keys(data[0]), function(_, key) {
tr.append("<th>" + key + "</th>")
});
tr.appendTo(thead);
$.each(data, function(_, obj) {
tr = $("<tr />");
$.each(obj, function(_, text) {
tr.append("<td>" + text + "</td>")
});
tr.appendTo(tbody);
});
})Run Code Online (Sandbox Code Playgroud)
td {
border: 1px solid black;
padding: 5px
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="table1">
<thead>
</thead>
<tbody>
</tbody>
</table>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13476 次 |
| 最近记录: |