jQuery Ajax写在函数内调用返回undefined是什么原因?
问题原因
你的return count写在success回调函数内部,这个返回值只会属于success回调本身,根本不会传递到外层的get_cart_count函数。哪怕你设置了async: false把请求改成同步模式,外层get_cart_count函数本身没有写任何返回语句,执行完默认就会返回undefined,自然拿不到你要的count值。
修正代码
如果坚持用同步请求的写法,只需要在外层函数定义变量接收回调里拿到的值,最后在外层函数统一return即可:
function get_cart_count(){ let count = 0; $.ajax({ url: "/cart/count", method: "get", async: false, success: function (res) { if (res > 0) { count = res; } }, }); return count; }
额外提醒:同步Ajax会阻塞浏览器主线程,请求发出到响应返回的这段时间里页面所有交互都会失效,用户体验很差,目前Web标准已经明确不推荐使用这种写法,更建议改用Promise、async/await的异步方案处理请求返回值。
内容的提问来源于stack exchange,提问作者aref razavi
相关产品推荐
相关产品推荐

