函式的ajax返回值在其他地方獲取
$.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,
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){
}
})
}