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

如何将Ajax发起的HTTP GET请求响应结果保存到变量中

如何将Ajax请求的返回值存入变量

你写的后端接口和前端Ajax请求基础逻辑没有问题,要存储接口返回的响应值,核心要注意$.ajax默认是异步执行的,不能用同步编码的思路直接拿返回值,具体实现方式如下:

方法1:在success回调中赋值(最基础写法)

先在请求作用域外声明存储变量,在请求成功的回调函数内把返回值赋值给变量即可。注意:所有依赖这个返回值的业务逻辑,必须写在success回调内部,否则会因为请求还未完成,读取到undefined。

// 声明存储响应值的变量
let result;

function test() {
    $.ajax({
        type: "GET",
        url: "/api/test",
        success: function(response) {
            // 将返回值存入变量
            result = response;
            console.log(result); // 此处可正常打印出 "hello"
            // 所有需要用到result的逻辑都要写在这个回调里
        }
    })
}
test();
// ❌ 不要在这个位置直接读取result,此时请求还没返回,result值为undefined

方法2:async/await写法(推荐,避免回调嵌套)

把Ajax请求包装为Promise对象,用async/await语法以接近同步的写法处理异步逻辑,不会有时序问题,代码可读性更高:

// 先把接口请求包装成返回Promise的函数
function getTestResult() {
    return new Promise((resolve, reject) => {
        $.ajax({
            type: "GET",
            url: "/api/test",
            success: (response) => resolve(response),
            error: (err) => reject(err)
        })
    })
}

async function test() {
    // 等待请求完成后再赋值,不会出现拿不到值的问题
    const result = await getTestResult();
    console.log(result); // 正常拿到 "hello"
    // 后续依赖result的逻辑直接在await之后写即可,不需要嵌套在回调里
}
test();

❌ 避坑提醒:不要为了方便给$.ajax添加async: false参数把请求改成同步模式,这种写法会阻塞浏览器主线程,请求发送期间页面会完全卡死,属于已经被废弃的不推荐用法。


内容的提问来源于stack exchange,提问作者Juzzn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:36:23