IE浏览器未对单引号/撇号进行网址编码

时间:2018-07-11 14:36:33

标签: javascript jquery ajax internet-explorer

当参数包含单引号/撇号时,我在IE11上使用jQuery进行AJAX调用时遇到问题。

基于jQuery文档https://api.jquery.com/jquery.getjson/

  

发送到服务器的数据作为查询附加到URL   串。如果data参数的值为纯对象,则为   转换为字符串并经过url编码,然后再附加到   网址。

它应该对任何特殊字符进行编码,但显然对IE11并没有这样做。

AJAX调用看起来像:

$.getJSON(
"https://fqdn.to.server:8888/pdqm/endpoint",
{
   firstName: self.firstName(),
   lastName: self.lastName()
},
function (data) { 
    //here is some stuff to do with UI
}

并且在使用时搜索示例Va $$ ar O'Connor时,它将创建请求URL为

https://fqdn.to.server:8888/pdqm/endpoint?firstName=Va%24%24ar&lastName=O'Connor

在Chrome / Firefox中看起来像

https://fqdn.to.server:8888/pdqm/endpoint?firstName=Va%24%24ar&lastName=O%27Connor

是正确编码的URL。

任何提示如何使它在IE上运行?还是另一只手-单引号/单引号是查询字符串中的有效字符,并且无论如何都必须由端点处理?

1 个答案:

答案 0 :(得分:1)

如果这只是造成您麻烦的 字符,您可以凑在一起解决该问题的方法,以检查用户是否使用IE,然后使用JavaScript getByBoundingSphere()函数从那里替换该用户:

replace()