gpt4 book ai didi

javascript - IE 不对单引号/撇号进行 url 编码

转载 作者:行者123 更新时间:2023-12-03 01:31:17 28 4
gpt4 key购买 nike

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

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

Data that is sent to the server is appended to the URL as a query string. If the value of the data parameter is a plain object, it is converted to a string and url-encoded before it is appended to the 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 上运行吗?或者另一方面 - 单引号/撇号是否是查询字符串中的有效字符并且无论如何都必须由端点处理?

最佳答案

如果这是造成您麻烦的唯一字符,您可以组合一个解决方法来检查用户是否在 IE 上,并使用 JavaScript replace() 从那里替换它功能:

var firstName, lastName;
if (window.navigator.userAgent.indexOf("MSIE") > 0) {
// they are using I.E.
firstName = self.firstName().replace(/\'/g, "%27");
lastName = self.lastName().replace(/\'/g, "%27");
}
else {
// every other browser, just set them normally
firstName = self.firstName();
lastName = self.lastName();
}
$.getJSON(
"https://fqdn.to.server:8888/pdqm/endpoint",
{
firstName: firstName,
lastName: lastName
},
function (data) {
//here is some stuff to do with UI
}
);

关于javascript - IE 不对单引号/撇号进行 url 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51288254/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com