Javascript 返回对象的Ajax JS函数未定义
我有一个返回JS对象的AJAX函数。然而,当我给函数赋值时,我得到了未定义的变量。在FireBug中调试时,一切正常,但我尝试将结果分配给var测试仪时除外 这是我的密码Javascript 返回对象的Ajax JS函数未定义,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个返回JS对象的AJAX函数。然而,当我给函数赋值时,我得到了未定义的变量。在FireBug中调试时,一切正常,但我尝试将结果分配给var测试仪时除外 这是我的密码 function AllBidData(HighestBid,MinimumBid,HighestProxyBid) { return { HighestBid: HighestBid, MinimumBid: MinimumBid,
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);
这是异步调用。函数在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
});