在一个Jquery函数中,只调用第二个函数,而第一个函数返回结果
这让我头疼,我有两个功能 1) 取得身份证 2) 使用检索到的ID调用第二个函数 现在我需要将它们合并到一个函数中,但显然第二个函数 在GetSelectedID()返回之前调用在一个Jquery函数中,只调用第二个函数,而第一个函数返回结果,jquery,function,wait,Jquery,Function,Wait,这让我头疼,我有两个功能 1) 取得身份证 2) 使用检索到的ID调用第二个函数 现在我需要将它们合并到一个函数中,但显然第二个函数 在GetSelectedID()返回之前调用 function FillControl() { var iSelectedID = GetSelectedID(); SetControlValuesWithSelectedID(iSelectedID); } function GetSelectedID() {
function FillControl() {
var iSelectedID = GetSelectedID();
SetControlValuesWithSelectedID(iSelectedID);
}
function GetSelectedID() {
$.ajax({
url: '123.ashx',
type: 'POST',
contentType: 'application/json',
success: function (data1) {
return data1;
}
});
}
请帮助获取仅在调用第一个函数后调用的第二个函数。合并回调函数。到您的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);
});
}
只需调用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
)
您的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);
}
});
}
然后:
这不是已经为您做到了吗?
GetSelectedID()
是异步的吗?您可以发布此函数的实现吗?不幸的是,第二个函数在第一个函数返回SelectedId之前被调用。问题是GetSelectedID()是一个通用函数,需要从许多函数中调用,并且不一定需要在以后进行任何操作,例如,它被用作参数的一部分,例如var PassingObj=new Object();PassingObj.ID=GetSelectedID();
function FillControl()
{
GetSelectedID(function(iSelectedID) {
SetControlValuesWithSelectedID(iSelectedID);
});
}