我已经被这个问题困住了几天了。 该程序需要通过一系列3个ajax调用从2个不同的xml文件中提取信息。第一个ajax调用从xml文件中获取数据,并根据具体情况,使用另一个嵌套的ajax调用从另一个文件中提取信息。然后第三个回调函数将通过另一个嵌套的ajax调用从第一个xml文件中提取更多信息 我的问题是,当第一个回调函数被触发并且我使用each()函数解析文件时,它会先触发循环结束然后触发第二个ajax及其相关的回调函数等...我认为不同的ajax调用和函数是正确嵌套的,但它不会像我在控制台日志中那样连续处理。 我希望我在这里足够清楚 谢谢你的帮助和建议!!! 这是代码:
//调用Ajax来获取xml生成的文件
$.ajax({
url: 'orders1.xml',
type: 'GET',
datatype: 'xml',
success: function(xml) {
console.log("Call successful ! Parsing XML...");
parseorders(xml);
},
error: function() {
alert( "Sorry, there was a problem!" );
}
});
function parseorders(xml) {
$('Orders_id', xml).each(function(i){
var ordersnum = $(this).attr("Orders_number");
var customer_number = $(this).find("customers_id").text();
var datemade = $(this).find('date_made').text();
var delivery = $(this).find('delivery').text();
var pickup = $(this).find('pickup').text();
console.log(i);
$.ajax({
type: "GET",
url: "business.xml",
dataType: "xml",
success: function(xml) {
console.log("Call successful ! Parsing XML...");
parsebusiness(xml);
}
});
function parsebusiness(xml) {
$("businessname", xml).each(function(j) {
var cust = $(this).find('customers_id').text();
if (cust === customer_number) {
console.log(j);
businessnam = $(this).attr('name');
lastname = $(this).find('lastname').text();
address = $(this).find('address').text();
city = $(this).find('city').text();
zip = $(this).find('zip').text();
phone = $(this).find('phone').text();
$('<div></div>').attr('id','reportm' + i).appendTo('#report');
$('#reportm' + i ).html( "<br /> <br /> Business: " + businessnam + " <br /> Contact person: " + lastname + "<br /> Address: " + address + "<br /> City: " + city + " <br /> Zip: " + zip + "<br /> Phone: " + phone + "<br /> Deliver: " + delivery + "<br /> Pick-up: " + pickup + "<br /> Date: " + datemade +"<br /> <br /> <table border='1'> <tbody> <tr> <th> Quantity </th> <th> Item </th> <th> Tax </th> <th> Total </th> </tr> ");
$.ajax({
url: 'orders1.xml',
type: 'GET',
datatype: 'xml',
success: function(xml) {
console.log("Call successful ! Parsing XML...");
parseorders1(xml);
}
});
function parseorders1(xml) {
$('transactions', xml).each(function(m){
var orde = $(this).find("Orders_id").text();
console.log(orde);
if (orde == ordersnum) {
var name = $(this).find('name').text();
var quantity = $(this).find('quantity').text();
var tax = $(this).find('tax').text();
var total = $(this).find('total').text();
$('<div></div>').attr('id','reportd' + m + i).appendTo('#reportm' + i );
$('#reportd' + m + i ).html("<tr> <td> " + name + "</td> <td> " + quantity + "</td> <td> " + tax + "</td> <td> " + total + " </td> </tr> ");
}
});
}
$('<div></div>').attr('id','reporte').appendTo('#reportd'+ m + i );
$('#reporte').html("</table> <br /> <br />");
}
});
}
});
}
答案 0 :(得分:0)
实际上循环正在运行。我有一个错误的变量名称为其中一个xml指针。
现在几乎正在工作,表格格式只是一个小问题。