使用 jquery ajax 将本地 url 连接到绝对 url
Local url being concatenated to absolute url using jquery ajax
我们正在使用 jquery ajax 进行服务调用:
$.ajax({
url: _sbUrl + "gates/1.0/sweeps/getVehicleDetails/" + request.data.regn_no,
method: "GET",
success: function(response) {
if (200 === response.statusCode) {
if (typeof callback === 'function') callback(response);
} else if (typeof callback === 'function') callback({});
},
error: function(response) {
if (typeof callback === 'function') callback({});
}
});
这里用的是_sbUrl
http://192.32.45.34:9090/
。
调用时,url 更新为
http://localhost/web/guest/%22http://192.32.45.34:9090/%22gates/1.0/sweeps/getVehicleDetails/DE3SA2323
这只发生在 IE10 及以下版本的 IE 上,而在所有其他浏览器上都可以正常工作。
我试过:
- 编码URL
- 已添加
crossdomain = true
但是 none 其中 worked.Is 这是 jQuery 的已知错误?如果是,我们是否有相同的解决方法。
根据@Archer 的建议,问题出在 _sbUrl
。
Url 作为字符串从属性文件中获取,对于 IE10,它也包含引号。
所以 http://192.32.45.34:9090/
被提取为 "http://192.32.45.34:9090/"
_sbUrl = _sbUrl.replace(/\\//g, "/");
@Archer 的推论是因为 %22http://192.32.45.34:9090/%22
有 %22
(相当于 ")作为前缀和后缀。
我们正在使用 jquery ajax 进行服务调用:
$.ajax({
url: _sbUrl + "gates/1.0/sweeps/getVehicleDetails/" + request.data.regn_no,
method: "GET",
success: function(response) {
if (200 === response.statusCode) {
if (typeof callback === 'function') callback(response);
} else if (typeof callback === 'function') callback({});
},
error: function(response) {
if (typeof callback === 'function') callback({});
}
});
这里用的是_sbUrl
http://192.32.45.34:9090/
。
调用时,url 更新为
http://localhost/web/guest/%22http://192.32.45.34:9090/%22gates/1.0/sweeps/getVehicleDetails/DE3SA2323
这只发生在 IE10 及以下版本的 IE 上,而在所有其他浏览器上都可以正常工作。 我试过:
- 编码URL
- 已添加
crossdomain = true
但是 none 其中 worked.Is 这是 jQuery 的已知错误?如果是,我们是否有相同的解决方法。
根据@Archer 的建议,问题出在 _sbUrl
。
Url 作为字符串从属性文件中获取,对于 IE10,它也包含引号。
所以 http://192.32.45.34:9090/
被提取为 "http://192.32.45.34:9090/"
_sbUrl = _sbUrl.replace(/\\//g, "/");
@Archer 的推论是因为 %22http://192.32.45.34:9090/%22
有 %22
(相当于 ")作为前缀和后缀。