0

ネストされた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");
                }
            });
        }

    });
}

私は何か間違ったことをしていますか?

4

3 に答える 3

0

コールバックは成功すると実行されるため、seasonStatusは冗長だと思います。

これはうまくいくはずです

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");

            });
        }

    });
于 2012-08-13T17:52:52.887 に答える
0

問題を深く掘り下げて、問題の本当の原因を見つけました。XMLドキュメントには多数のエンコードエラーがありました(データには予約記号や著作権記号などが含まれていました)。これらを削除して正しいエンティティに置き換えると、問題が修正されました。問題だと思っていた元のコードは、今では完全に正常に機能します。

于 2012-08-13T18:46:06.387 に答える
0

私はこのようなことを試してみます:

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 diningをどのように期待するかということです。find()

于 2012-08-13T18:01:01.930 に答える