$.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;}
}
});
return hasman;
}
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){
}
})
}