基于jQuery文档https://api.jquery.com/jquery.getjson/
发送到服务器的数据作为查询附加到URL一串如果数据参数的值是普通对象,则为转换为字符串并编码url,然后将其附加到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
}
当使用is搜索示例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上,然后使用JavaScriptreplace()
函数替换它:
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
}
);