如何在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
相关产品推荐
相关产品推荐

