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

如何在JavaScript的XMLHttpRequest GET请求中传递数据?

解决XMLHttpRequest GET请求发送数据的问题

GET请求的参数是通过URL查询字符串传递的,不是通过请求体发送,你代码里用send(data)传数据、设置Content-type请求头的做法不符合GET请求规范,后端大概率接收不到数据。另外open方法的第三个参数仅控制请求是否异步,不能用来传数据。

正确实现步骤:

  • 将data对象转换为URL查询字符串(可借助原生URLSearchParams工具)
  • 把查询字符串拼接到目标URL末尾(注意原URL已有查询参数时,用&连接)
  • 移除setRequestHeader代码(GET请求无需设置请求体类型)
  • send方法传入null或不传参数

修正后的代码:

function useAjax(url, data) {
    const xhttp = new XMLHttpRequest();
    xhttp.onload = function(e) {
        const resData = JSON.parse(xhttp.responseText);
        setResponseData(true, resData);
    };
    // 将data转为查询字符串
    const params = new URLSearchParams(data).toString();
    // 拼接完整URL,兼容原URL已有?的情况
    const fullUrl = url + (url.includes('?') ? '&' : '?') + params;
    xhttp.open("GET", fullUrl, false);
    xhttp.send(null);
}

额外提示:

  • 同步请求(第三个参数设为false)会阻塞主线程,易导致页面卡顿,建议优先使用异步请求(设为true)
  • 若data本身是字符串格式的参数,直接拼接到URL后即可,无需URLSearchParams处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:02:39