Javascript 嵌套AJAX调用不起作用
我很难让嵌套的AJAX调用正常工作。我只想在外部AJAX调用成功完成后执行内部AJAX调用Javascript 嵌套AJAX调用不起作用,javascript,jquery,xml,ajax,Javascript,Jquery,Xml,Ajax,我很难让嵌套的AJAX调用正常工作。我只想在外部AJAX调用成功完成后执行内部AJAX调用 var diningHours = $("#diningHours"); var facStaffDiningData = $("#facStaffDiningData"); var diningCommonsData = $("#diningCommonsData"); if($.trim(diningHours.html()).length == 0) { var season; //
var diningHours = $("#diningHours");
var facStaffDiningData = $("#facStaffDiningData");
var diningCommonsData = $("#diningCommonsData");
if($.trim(diningHours.html()).length == 0) {
var season;
//This call executes fine (tested it with console logging)
$.get("data/dining-hours.php", {summer: "check"}, function(seasonData, seasonStatus) {
if(seasonStatus == "success") {
season = seasonData;
//This is the call that isn't being executed
$.get("data/dining-hours.php", function(hoursData, hoursStatus) {
if(hoursStatus == "success") {
var hours = $(hoursData).find("hours dining");
var html = hoursFeed(hours, season);
diningHours.append(html).collapsibleset("refresh");
}
});
}
});
}
我做错了什么吗?我认为状态是多余的,因为回调将在成功时执行 这应该行得通
var season;
//This call executes fine (tested it with console logging)
$.get("data/dining-hours.php", {summer: "check"}, function(season, seasonStatus) {
console.log('CB1',season);
$.get("data/dining-hours.php", function(hoursData) {
console.log('CB2',hoursData);
var hours = $(hoursData).find("hours dining");
var html = hoursFeed(hours, season);
diningHours.append(html).collapsibleset("refresh");
});
}
});
我想试试这样的东西:
var diningHours = $("#diningHours"),
facStaffDiningData = $("#facStaffDiningData"),
diningCommonsData = $("#diningCommonsData");
if(!$.trim(diningHours.html()).length) {
var XHR = $.get("data/dining-hours.php", {summer: "check"});
XHR.success(function(seasonData) {
var season = seasonData,
XHR2 = $.get("data/dining-hours.php");
XHR2.success(function(hoursData) {
var hours = $(hoursData).find("hours dining"),
html = hoursFeed(hours, season);
diningHours.append(html).collapsibleset("refresh");
});
});
}
问题是,
hours dinning
到底是什么,您希望find()
函数如何找到它?深入研究这个问题,我找到了问题的真正根源。XML文档有一系列编码错误(数据中有保留符号和版权符号)。删除这些并用正确的实体替换它们修复了问题。我原来认为是问题所在的代码现在运行得非常好。Firebug中发生了什么?页面上是否有任何错误?我敢打赌sequencestatus==“success”
返回的是false,为什么需要在成功处理程序中检查状态是否为“success”,这是我无法理解的!是因为它没有执行,还是因为它没有选择任何东西?您可能需要设置一些断点,并查看故障的确切位置。@AndrewHitaker不,页面上没有错误。@adeneoseasonStatus
正在返回“成功”。你说得对,我本来想检查“成功”,以防返回另一个状态,但现在我意识到我正在检查成功回调的内部。谢谢不幸的是,这不起作用。这段代码在我决定嵌套它们之前工作得很好,因此我知道find()
方法工作正常。我正在使用find()
遍历包含这些标记的XML文件。在没有嵌套AJAX调用的情况下,一切都可以正常工作:(你说得对,我不应该进行额外的状态检查。但是它仍然不起作用。你能给我们举一个季节数据的例子吗?也许我们可以使用控制台。log(季节数据)作为回调函数的第一行。当然,季节数据
将是“夏季”或“秋季”。它在另一个函数中用作变量,以确定如何遍历XML文档。此外,在第一个AJAX请求的回调中,日志记录seasuredata
工作正常(并返回正确的值)。这是第二个请求的回调,似乎没有执行。我已编辑了我的答案。请检查CB2,如果未显示此日志,则data/dinning-hours.php将发出http错误。