1. 程式人生 > >函式的ajax返回值在其他地方獲取

函式的ajax返回值在其他地方獲取

function Ishasman(){
         $.ajax({
url: "com.cloud.oa.service.impl.OfficeSysRs.queryMembers()", 
data: { orgGid:gid},
success: function(resdata, textStatus, jqXHRult){
if(resdata.length>0){hasman=true;}
else{hasman=false;}
}
         });    

}

比如上面的函式。我想在其他地方獲取裡面的變數hasman的值。

但是就算我們直接把hasman定義成全域性變數。在其他地方也獲取不到。因為函式執行的時候首先會執行ajax以外的(ajax是非同步的緣故)。所以我們獲取的時候這個ajax還根本沒有執行呢。

解決辦法

方法一步驟:

1.把ajax改成同步的。async: false,

2.執行這個函式,函式執行完返回這個hasman。然後通過函式名來獲取。

方法二步驟:

1.把某個變數定義成全域性的,.把ajax改成同步的。async: false,

2.在外部直接用全域性變數名獲取變數。

方法一:

function Ishasman(){

var hasman;  //在這裡定義的,或者定義成全域性變數都是可以的。因為最後你是函式名獲取的hasman的值。
         $.ajax({
url: "com.cloud.oa.service.impl.OfficeSysRs.queryMembers()", 
data: { orgGid:gid},
async:false,

success: function(resdata, textStatus, jqXHRult){
if(resdata.length>0){hasman=true;}
else{hasman=false;}
}
         });
         returnhasman;       
}

if(Ishasman()){}//使用

方法二:

var hasman;

function Ishasman(){

         $.ajax({
url: "com.cloud.oa.service.impl.OfficeSysRs.queryMembers()", 

data: { orgGid:gid},

                        async:false,

success: function(resdata, textStatus, jqXHRult){
if(resdata.length>0){hasman=true;}
else{hasman=false;}
}
         });    

}

執行函式  Ishasman();

alert(hasman)

如何需要兩ajax,第一個ajax的返回值是ajax的引數。。這個時候通過全域性變數的方式好像並不奏效。解決辦法:

$.ajax({
url: "com.cloud.oa.service.impl.OfficeSysRs.getOrgGid(orgGid, orgType)", 
data: {},
success: function(resdata, textStatus, jqXHRult){
thisGid=resdata; 
sub(thisGid);
}

function sub(id){

        url: "com.cloud.oa.service.impl.OfficeSysRs.getOrgGid(orgGid)", 
data: {orgId:id},

success: function(resdata, textStatus, jqXHRult){

          }

        })

}