0

JS オブジェクトを返す AJAX 関数があります。ただし、変数を関数に割り当てると、未定義になります。FireBug でのデバッグ、結果をvar テスターに​​割り当てようとする場合を除いて、すべて問題ありません

これが私のコードです...

    function AllBidData(HighestBid,MinimumBid,HighestProxyBid) {
        return {
            HighestBid: HighestBid,
            MinimumBid: MinimumBid,
            HighestProxyBid: HighestProxyBid
        };
    }



    function GetAllBidData() {          

        $.ajax({
            type: "POST",
            dataType: "json",
            url: "/VehicleAuction/GetAllBidData",
            data: { AuctionID: AuctionID, UserID: UserID }

        }).done(function (msg) {

            var BidDate = new AllBidData(msg.HighestBid, msg.MinimumBid, msg.HighestProxyBid);
            return BidDate;
        });
    }    

var tester = GetAllBidData(); 
//why is tester is undefined?

更新と解決策- これが私がこの問題を解決した方法です -遅延オブジェクトを使用して

function GetAllBidData() {          
    return $.ajax({
        type: "POST",
        dataType: "json",
        url: "/VehicleAuction/GetAllBidData",
        data: { AuctionID: AuctionID, UserID: UserID }
    });
}

function AllBidData(data) {
    return {
        HighestBid: data.HighestBid,
        MinimumBid: data.MinimumBid,
        HighestProxyBid: data.HighestProxyBid
    };
}

var tester = null;
tester = GetAllBidData().done(AllBidData);
4

1 に答える 1

0

非同期呼び出しです。関数は ajax 呼び出しが発生する前に実行され、値を返します

function GetAllBidData(callback) {          

        $.ajax({
            type: "POST",
            dataType: "json",
            url: "/VehicleAuction/GetAllBidData",
            data: { AuctionID: AuctionID, UserID: UserID }

        }).done(function (msg) {

            var BidDate = new AllBidData(msg.HighestBid, msg.MinimumBid, msg.HighestProxyBid);
            callback(BidDate);
        });
    }    

var tester = GetAllBidData(function(yourValue){
    //do stuff here with yourValue
}); 
于 2013-11-07T10:00:31.923 に答える