3 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
類(lèi)似于 John M 的回答,但用法不同。
返回$.ajax承諾并使用.done()
if (servicename!="")
return $.ajax({...
// else return null
$('#btnTest').click(function () {
var ajax = RetrieveDD($("#ddlCountries"), "country", 0);
if (ajax) {
ajax.done(function(data) {
console.log('done');
});
}
});

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
JQuery.ajax() 實(shí)現(xiàn)了 Promise 接口,因此您可以獲取 ajax 調(diào)用返回的 Promise 對(duì)象并將其傳遞回您的調(diào)用函數(shù)。那可以在ajax調(diào)用完成后使用Promise.then()來(lái)調(diào)用代碼,我認(rèn)為這比使用回調(diào)更簡(jiǎn)潔。
function RetrieveDD(ddl, ddtype, id) {
var servicename;
var promise;
switch (ddtype) {
case 'country':
servicename = "LoadCountries";
break;
case 'state':
servicename = "LoadStateProvinces";
break;
case 'city':
servicename = "LoadCityLocalities";
break;
default:
servicename = "";
}
if (servicename != "") {
promise = $.ajax({
url: 'DDService.asmx/' + servicename,
dataType: 'json',
method: 'post',
data: { ID: id },
success: function (data) {
ddl.empty();
$.each(data, function (index) {
ddl.append($("<option" + (index == 0 ? " selected" : "") + "></option>").val(this['V']).html(this['T']));
console.log('update list');
});
},
error: function (err) {
console.log('Error (RetrieveDD): ' + JSON.stringify(err, null, 2));
}
});
};
return promise;
};
$('#btnTest').click(function () {
var promise = RetrieveDD($("#ddlCountries"), "country", 0);
if (promise) {
promise.then(function(value) {
var cid = $("#ddlCountries").val();
console.log('done');
});
}
});

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超2個(gè)贊
在您的函數(shù)中使用回調(diào):
function RetrieveDD(ddl, ddtype, id, callback = false) {
// ...
if (servicename != "") {
$.ajax({
url: 'DDService.asmx/' + servicename,
dataType: 'json',
method: 'post',
data: { ID: id },
success: function (data) {
// ...
if(typeof callback === 'function'){
callback(data);
}
},
error: function (err) {
// ...
if(typeof callback === 'function'){
callback(err);
}
}
});
};
};
RetrieveDD($("#ddlCountries"), "country", 0, (data_or_error)=>{
var cid = $("#ddlCountries").val();
});
添加回答
舉報(bào)