【问题标题】:Local url being concatenated to absolute url using jquery ajax使用 jquery ajax 将本地 url 连接到绝对 url
【发布时间】:2018-03-09 20:54:07
【问题描述】:

我们正在使用 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/。 拨打电话时,网址会更新为此

http://localhost/web/guest/%22http://192.32.45.34:9090/%22gates/1.0/sweeps/getVehicleDetails/DE3SA2323

这仅在 IE10 及以下版本的 IE 上发生,而在所有其他浏览器上都可以正常工作。 我试过了:

  1. 编码网址
  2. 已添加crossdomain = true 但它们都不起作用。这是 jQuery 的已知错误吗?如果是,我们是否有解决方法。

【问题讨论】:

  • 是否需要任何类型的身份验证才能发出请求?我之所以问,是因为这看起来像是重定向到访客页面,原始网址已编码。
  • 不,它根本不需要任何身份验证。加上“localhost/web/guest”这是默认的本地 url,它以某种方式附加到本地 url
  • 我唯一能建议的是在 ajax 调用之前创建 url 并将其记录到控制台以确保它完全符合您的期望。 jQuery Ajax 方法不只是动态更改 url,除非您已明确编写代码来这样做。
  • 是的,我做的一模一样,它显示了正确的 url,但是随后对这个奇怪的 url 进行了 ajax 调用
  • 出于好奇,如果您在 ajax 调用之前将 url 构建为字符串,然后将该变量用作 url 参数,它会做同样的事情吗?我只问,因为它目前通过用双引号 (%22 = ") 包裹 _sbUrl 来分隔 url

标签: jquery ajax internet-explorer-10 url-encoding liferay-7


【解决方案1】:

根据@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(相当于") 作为前缀和后缀。

【讨论】:

    猜你喜欢
    • 2015-01-03
    • 2011-02-14
    • 2019-02-01
    • 2011-01-22
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    相关资源
    最近更新 更多