函数的ajax返回值在其他地方获取

在JavaScript中,由于Ajax的异步特性,直接通过全局变量无法在其他地方获取到Ajax的返回值。解决方法包括将Ajax设置为同步(async: false)或者通过回调函数传递结果。如果需要两个Ajax请求,其中一个的返回值作为另一个的参数,可以使用局部变量和回调函数确保执行顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;}
}
          });
         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){

          }

        })

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值