这是我的头脑,我有2个功能 1)获取ID 2)使用检索到的ID调用第二个函数。
现在我需要将它们组合在一个函数中,但显然第二个函数会得到 在GetSelectedID()返回之前调用
function FillControl() {
var iSelectedID = GetSelectedID();
SetControlValuesWithSelectedID(iSelectedID);
}
function GetSelectedID() {
$.ajax({
url: '123.ashx',
type: 'POST',
contentType: 'application/json',
success: function (data1) {
return data1;
}
});
}
请在调用第一个函数后帮助调用第二个函数。
答案 0 :(得分:0)
合并回调函数。到你的GetSelectedID函数。
当您需要在第一个函数完成运行后同步触发第二个函数时,回调函数非常有用。
function GetSelectedID(callback){
// everything this function does
var params = result;
if(typeof(callback) == "function"){ // check if a callback was supplied
callback(params); // run callback with your ID
}
return params; // also useful to return data in any case.
}
并在您的正常代码中:
function FillControl() {
GetSelectedID(function(params){
SetControlValuesWithSelectedID(params);
});
}
答案 1 :(得分:0)
只需在ajax成功回调中调用第二个函数
GetSelectedID(function(iSelectedID){SetControlValuesWithSelectedID(iSelectedID);});
function GetSelectedID(callback) {
$.ajax({ url: '123.ashx',
data: PassingObj, type: 'POST', contentType: 'application/json',
success: function (id) {
if(callback)
callback(id);
}
});
}
如果您想从该函数(id = GetSelectedID()
)获取返回值,则必须进行同步调用(async: false
)
答案 2 :(得分:0)
您的GetSelectedID()
函数是异步的,因为它执行AJAX请求。它会立即返回,但iSelectedID
只会在一段时间后才会显示。
您可以将回调函数传递给GetSelectedID()
,从传递给$.ajax()
的成功回调中调用该函数,并将该调用重定位到该函数中的SetControlValuesWithSelectedID
:
function GetSelectedID(callback)
{
$.ajax({
url: '123.ashx',
data: PassingObj,
type: 'POST',
contentType: 'application/json',
success: function(data1) {
callback(data1);
}
});
}
然后:
function FillControl()
{
GetSelectedID(function(iSelectedID) {
SetControlValuesWithSelectedID(iSelectedID);
});
}