You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 00:54:28