Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个Jquery函数中,只调用第二个函数,而第一个函数返回结果_Jquery_Function_Wait - Fatal编程技术网

在一个Jquery函数中,只调用第二个函数,而第一个函数返回结果

在一个Jquery函数中,只调用第二个函数,而第一个函数返回结果,jquery,function,wait,Jquery,Function,Wait,这让我头疼,我有两个功能 1) 取得身份证 2) 使用检索到的ID调用第二个函数 现在我需要将它们合并到一个函数中,但显然第二个函数 在GetSelectedID()返回之前调用 function FillControl() { var iSelectedID = GetSelectedID(); SetControlValuesWithSelectedID(iSelectedID); } function GetSelectedID() {

这让我头疼,我有两个功能 1) 取得身份证 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;
                    }
                });
            }

请帮助获取仅在调用第一个函数后调用的第二个函数。

合并回调函数。到您的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);
    });
}