js——ie下,$.get()不执行问题

参考:https://blog.csdn.net/panyox/article/details/51423856?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control

   https://blog.csdn.net/weixin_34248118/article/details/89617468?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242

   https://www.cnblogs.com/zhang55qwe/p/5559108.html

 

我的情况

   使用$.get()方式请求,请求参数中有中文,catch中的statusText返回"No Transport",请求路径中的中文乱码。

 

原因

   1. 在IE下用Ajax请求某一页面,通常会因为缓存的原因而返回上一次的结果,造成混乱。即get方式时,获取数据,因发送参数和地址都一致,故IE浏览器会从缓存中取,而不会去请求服务器端

   2. 浏览器在传递url的时候,会使用自己的编码格式对地址进行编码,如果浏览器所使用编码与服务器采用编码不一致,服务器接收到的参数就会出现乱码

 

缓存问题解决

    方法1:在Ajax请求的页面后加个随机函数,比如当前时间戳

    方法2:在js开始的地方,加上以下代码,就不用每个接口都去加随机数

$.ajaxSetup({cache:false})

"No Transport" 问题解决

    在调用Ajax方法之前加上以下代码

jQuery.support.cors = true;  

中文乱码问题解决

    使用js encodeURI 对地址进行统一编码,如下

var url = encodeURI("article/detail?title=我是中文");

 

上一篇:docker-compose 安装LNMP


下一篇:关于谷歌浏览器不支持html5中audio的autoplay解决方法(js代码解决)