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

如何将axios请求返回的JSON结果传给其他函数?调用报400错误怎么解决?

问题原因

你代码里有几个核心错误直接导致了400报错和未处理的Promise异常:

  • id取值错误:id = console.log(res.data.result.items[number].memberId)这行代码中,console.log()的返回值是undefined,所以你实际传给memberGet的参数永远是undefined,并不是你想要的memberId值。
  • 请求URL参数未替换:memberUrl里的[mem]只是普通字符串,不会自动替换成你传入的mem参数值,最终发起请求的URL里带着[mem]字符串,不符合接口要求自然返回400状态码。
  • 循环下标逻辑问题:do-while循环先执行number +=1,第一次取值是下标1的元素,直接跳过了下标为0的第一个成员数据。
  • 异步函数无错误处理:调用memberGet是异步函数,你没有加await也没有做catch错误捕获,所以接口报错会抛出未处理的Promise拒绝警告。

修正后的代码

async function membersGet() {
    const members = 'http://legislation.nysenate.gov/api/3/members/2020?mykey'
    const config = {
        method: 'get',
        url: members
    }
    try {
        let res = await axios(config)
        // 直接循环前5个,下标0到4
        for (let number = 0; number < 5; number++) {
            const id = res.data.result.items[number].memberId;
            // 调用异步函数加await,也可以单独加catch捕获单个请求错误避免影响其他请求
            await memberGet(id);
        }
    } catch (err) {
        console.error('获取成员列表失败:', err)
    }
}

async function memberGet(mem) {
    // 用模板字符串替换mem参数
    const memberUrl = `http://legislation.nysenate.gov/api/3/members/2013/${mem}?key=mykey`
    const config = {
        method: 'get',
        url: memberUrl
    }
    try {
        let res = await axios(config)
        const chamber = res.data.result.chamber
        const name = res.data.result.fullName
        const district = res.data.result.districtCode
        const mail = res.data.result.imgName
        console.log(chamber, name, district, mail);
    } catch (err) {
        console.error(`获取成员${mem}详情失败:`, err)
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:15:02