Javascript 嵌套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; //

我很难让嵌套的AJAX调用正常工作。我只想在外部AJAX调用成功完成后执行内部AJAX调用

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不,页面上没有错误。@adeneo
seasonStatus
正在返回“成功”。你说得对,我本来想检查“成功”,以防返回另一个状态,但现在我意识到我正在检查成功回调的内部。谢谢不幸的是,这不起作用。这段代码在我决定嵌套它们之前工作得很好,因此我知道
find()
方法工作正常。我正在使用
find()
遍历包含这些标记的XML文件。在没有嵌套AJAX调用的情况下,一切都可以正常工作:(你说得对,我不应该进行额外的状态检查。但是它仍然不起作用。你能给我们举一个季节数据的例子吗?也许我们可以使用控制台。log(季节数据)作为回调函数的第一行。当然,
季节数据
将是“夏季”或“秋季”。它在另一个函数中用作变量,以确定如何遍历XML文档。此外,在第一个AJAX请求的回调中,日志记录
seasuredata
工作正常(并返回正确的值)。这是第二个请求的回调,似乎没有执行。我已编辑了我的答案。请检查CB2,如果未显示此日志,则data/dinning-hours.php将发出http错误。