【问题标题】:problem with '/' in the REST URL parameters for an Ajax callAjax 调用的 REST URL 参数中的“/”问题
【发布时间】:2011-02-27 13:42:42
【问题描述】:
var url     = relativeURI+'/rest/PPS/Prod/'+encodeURIComponent(prod)+'/Section/'+encodeURIComponent(section);

$j.ajax({
  url: url,

  type: 'POST',

  error: function(){
    alert('Error');
  },
  success: function(){
   alert('ItWorks');
  }
});

}

在这个 ajax 调用中,如果我在参数 prod 或 sec 中有“/”,那么就会出错。该请求甚至没有命中服务器。我在参数上使用 encodeURIComponent 。它适用于其中没有“/”的其他参数。请帮忙。

【问题讨论】:

  • 您希望斜杠最终成为 URL 中的实际分隔符,还是希望它们被视为 URL 的每个 part 的一部分?
  • 我希望参数“prod”或“section”中的斜杠不被视为 URL 分隔符。例如.. 我的 URI 是 /.../rest/PPS/Prod/{B39}/Section/{PVT/SSS/F} 添加了花括号来表示参数。使用 encodeURIComponent() 后,我得到了类似 /.../rest/PPS/Prod/{B39}/Section/PVT%2FSSS%2F 的 URI 但这失败了。我得到一个错误。其中没有斜杠的其他参数效果很好。
  • 那么你得到了什么错误?错误是来自浏览器还是来自您的服务器?
  • 我已经测试了使用“REST Easy”向服务器发送带有编码 URI 的请求,它工作正常。 jQuery ajax 以某种方式抛出错误。
  • 我确定请求不会发送到服务器。我从这部分代码中得到警报。错误:函数(){警报('错误'); }

标签: javascript jquery ajax url encoding


【解决方案1】:

我复制了您的逻辑,请求确实发送到了服务器。但是,如果服务器不喜欢该 URL,那么您的服务器端代码甚至不会被调用。 (在我的例子中,没有服务器端代码,但我可以看到 404 响应并且可以看到服务器——Apache——解码了 URL)。

因此,您的服务器可能无法解码 URL。您确定在尝试非 jquery 路由时对其进行了编码吗?您可能不需要encodeURIComponent 电话。如果删除它们会发生什么?

【讨论】:

    【解决方案2】:

    我已经对参数进行了编码并尝试了非 jQuery 路由,它可以正常工作(使用的是 RESTEasy)。当我删除斜杠时,我会收到 404 响应,这意味着该 URI 没有 REST 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-25
      • 2017-04-13
      • 1970-01-01
      • 2015-02-16
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多