我想以表格格式检索 HTML 中的 XML 数据。我尝试使用 ajax 但没有数据。这可能是什么问题,任何人都可以帮我解决。我是阿贾克斯新手。请随意告诉我的代码中的任何错误。下面是我想要喜欢的图片
$(document).ready(function() {
$(window).load(function () {
$.ajax({
type: 'GET',
url: '2.xml',
dataType: 'xml',
success: function myFunction(xml) {
var i;
var xmlDoc = xml.responseXML;
var table="<tr><th>Artist</th><th>Title</th></tr>";
var x = xmlDoc.getElementsByTagName("Row");
for (i = 0; i <x.length; i++) {
table += "<tr><td>" +
x[i].getElementsByTagName("Process")[0].childNodes[0].nodeValue +
"</td><td>" +
x[i].getElementsByTagName("Product")[0].childNodes[0].nodeValue +
"</td></tr>" +
x[i].getElementsByTagName("Operation")[0].childNodes[0].nodeValue +
"</td></tr>" +
x[i].getElementsByTagName("Description")[0].childNodes[0].nodeValue +
"</td></tr>" +
x[i].getElementsByTagName("Batch")[0].childNodes[0].nodeValue +
"</td></tr>" +
x[i].getElementsByTagName("QTY")[0].childNodes[0].nodeValue +
"</td></tr>" +
x[i].getElementsByTagName("PlannedSchedule")[0].childNodes[0].nodeValue +
"</td></tr>" +
x[i].getElementsByTagName("ActualSchedule")[0].childNodes[0].nodeValue +
"</td></tr>" +
x[i].getElementsByTagName("Status")[0].childNodes[0].nodeValue +
"</td></tr>";
}
document.getElementById("demo").innerHTML = table;
}
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="demo"></table>
XML:
<Rowsets>
<Rowset>
<Row>
<Process>70787863</Process>
<Product>600033</Product>
<Operation>Operation goes here</Operation>
<Description>Operation description goes here</Description>
<Batch>259</Batch>
<QTY>999</QTY>
</Row>
<Row>
<Process>707863</Process>
<Product>6033</Product>
<Operation>Operation goes here</Operation>
<Description>Operation description goes here</Description>
<Batch>249</Batch>
<QTY>99</QTY>
</Row>
</Rowset>
</Rowsets>
我认为你的代码的问题是你在 xmlDoc 中未定义..
可以通过以下代码实现。
HTML
<table id="demo">
<thead>
<th>Product</th>
<th>Process</th>
<th>Operation</th>
<th>Description</th>
<th>Batch</th>
<th>Qty</th>
</thead>
<tbody></tbody>
JS
$.ajax({
type: 'GET',
url: 'data.xml',//Your xml data
dataType: 'xml',
success: function(xml){
$(xml).find("Row").each(function(){
var Product = $( this ).find( 'Process' ).text()
var Process = $( this ).find( 'Product' ).text()
var Operation = $( this ).find( 'Operation' ).text()
var Description = $( this ).find( 'Description' ).text()
var Batch = $( this ).find( 'Batch' ).text()
var Qty = $( this ).find( 'Qty' ).text()
$('#demo tbody').append('<tr><td>'+Product+'</td><td>'+Process+'</td><td>'+Operation+'</td><td>'+Description+'</td><td>'+Batch+'</td><td>'+Qty+'</td></tr>')
});
}
})
您真的应该查看 JQuery Datatables,我一直使用它们来用 Ajax 数据填充表格。
function formatXml(xml) {
var formatted = '';
var reg = /(>)(<)(\/*)/g;
xml = xml.replace(reg, '$1\r\n$2$3');
var pad = 0;
xml.split('\r\n').forEach(function (node) {
var indent = 0;
if (node.match(/.+<\/\w[^>]*>$/)) {
indent = 0;
} else if (node.match(/^<\/\w/)) {
if (pad !== 0) {
pad -= 1;
}
} else if (node.match(/^<\w[^>]*[^\/]>.*$/)) {
indent = 1;
} else {
indent = 0;
}
var padding = '';
for (var i = 0; i < pad; i++) {
padding += ' ';
}
formatted += padding + node + '\r\n';
pad += indent;
});
return formatted;
}