-1

我有一个依赖于 AJAX 调用的 JS 脚本,该调用将参数添加到 html 请求中。我遇到了两个问题。

  1. 我想不出一种简单的方法来获取包含参数的路径名。在直接 JS 中,location.pathname只返回当前路径,不带参数。使用 JQuery,$(document).href返回整个 URL,但包括我不想要的东西,如方案、域等。是否有一个很好、简单、简单的方法只返回包含参数的路径?
  2. 一旦我有了路径,我还没有找到添加参数的好方法,因为路径可能已经包含零个或多个参数。幸运的是,我不需要更新已经存在的密钥,只需添加一个新密钥。我已经在 SO 上发现了一些类似的问题,例如:Add a parameter to the URL with JavaScript,但是有没有办法在不编写我自己的 URL 解析器或其他样板代码的情况下做到这一点?
4

2 回答 2

0

我找到了自己问题的答案。

事实证明,它比我迄今为止发现的任何其他解决方案都容易得多。

在 JS 中,location.search返回 URI 的查询参数字符串。所以我可以简单地检查它是否存在,如果存在,则添加&foo=bar到 URI 的末尾,?foo=bar如果不存在。无需解析。

顺便说一句,这也回答了我的另一个问题:location.pathname+location.search返回包含查询参数的路径。

此解决方案不适用于所有情况,尽管它适用于我的情况。可能会出现的一些问题:如果要修改现有参数,则需要进行额外的解析。或者,如果您的参数包含诸如?or之类的字符&,则需要额外的转义。更完整的解决方案在这里:http ://www.eggheadcafe.com/articles/20020107.asp

于 2013-03-03T06:38:23.987 回答
0

获取仅包含参数的路径名的简单方法是首先使用 location.href 获取完整的 url,例如 var path= window.location.href,然后拆分此 url,例如 (var pathQyeryPramater = path.split("/")[3] )根据您的要求。此 pathQyeryPramater 将仅返回带有查询参数的整个路径,然后跟进上述答案。

于 2017-04-18T08:17:04.237 回答