ie下,ajax的get请求参数乱码问题

ajax的get请求参数乱码问题

问题

在项目中的一个异步请求函数里,代码如下:

...
...
const response = await axios({
url:`/.../...?value=${value}`,
method: 'GET'
});
...
...
  • 使用GET请求,在其他浏览器下,该请求的参数可以正常发送,

谷歌浏览器下正常
请添加图片描述

  • 而在IE中参数值是中文时就会变成乱码,其他就正常。

中文参数值下出现乱码
请添加图片描述
参数值为数字时正常
请添加图片描述

原因

  • Firefox、Chrome浏览器下会自动对请求URL的参数,使用encodeURI编码,中文参数会被自动转义;
  • IE浏览器则不会,所以导致乱码,请求失败;

解决:

  • 使用encodeURI()函数,对参数主动转义;
...
...
const response = await axios({
url:`/.../...?value=${encodeURI(value)}`,
method: 'GET'
});
...
...

POST

也可以通过POST请求避免IE浏览器这个问题,因为POST请求的参数、数据都放在请求体中,这样就避免了请求URL参数,自动转义的问题;
但是如果使用postapi就不够RESTful,因为这是一个获取数据的请求;
所以为了兼容IE,最好的办法是使用encodeURI()函数;

终!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值