一个方法中的ajax在success中renturn一个值,但是方法的返回值是undefind?

https://segmentfault.com/q/1010000003762379

A页面

console.log(handleData("search_list", "http://192.168.1.11/Sueach/index", data));//undefind
// if(handleData("search_list", "http://192.168.1.11/Sueach/index", data)=="none"){ // document.querySelector(".search-error").style.display="block"; // }

js页面

请输入代码function handleData(warp, url, par) { par.mobile = mobile; mui.ajax(url, { data: par, dataType: 'json', type: 'get', timeout: 10000, success: function(data) { console.log(data.status);//为0 if (data.status == 0) { console.log(""执行了);//执行到这 return "none"; } handleJson(data.data, warp, par.p); }, error: function(xhr, type, errorThrown) { console.log(type); } }); }

为什么console.log输出的为undefined呢?

 
 

3 个回答

 

1

 
采纳

handleData 没有返回值默认值是undefined 我一般这样写

function handleData(warp, url, par) { var result=""; par.mobile = mobile; mui.ajax(url, { data: par, dataType: 'json', type: 'get', async:false,// timeout: 10000, success: function(data) { console.log(data.status);//为0 if (data.status == 0) { console.log(""执行了);//执行到这 result= "none"; return;//这里会退出success函数 }else{//这样在status!=0时才执行, handleJson(data.data, warp, par.p); } }, error: function(xhr, type, errorThrown) { console.log(type); } }); return result; }
 

1

 

1)mui.ajax是个异步调用方法啊,handleData方法返回时候, mui.ajax还没执行完呢
2)handleData方法没有返回值,就返回默认的undefined

 

1

 

楼上两位都是正解,你要用返回值需要用ajax同步模式,即二楼的代码中 async:false,默认为true是异步,设为false为同步

转载于:https://www.cnblogs.com/antis/p/5458728.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值