JS/JQuery:将参数添加到具有未知数量参数的路径

问题描述:

我有一个JS脚本,它依赖于向html请求添加参数的AJAX调用。我遇到了两个问题。JS/JQuery:将参数添加到具有未知数量参数的路径

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

所以你已经有了一堆来自另一个问题的解决方案。那么为什么你需要编写自己的解析器?他们已经在这些答案中为你写了。他们还展示了如何从'location'获取参数。也许你应该花一些时间并使用你找到的代码。 – 2013-03-02 20:09:59

+0

[用JavaScript添加参数到URL]的可能的副本(http://stackoverflow.com/questions/486896/adding-a-parameter-to-the-url-with-javascript) – 2013-03-02 20:11:25

+0

如果您正在使用jQuery,'$(document).href'不会返回整个'href'。它返回'undefined'。 – 2013-03-02 20:12:15

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

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

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

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

该解决方案不适用于所有情况,但适用于我的情况。可能出现的一些问题:如果您想修改现有参数,则需要额外解析。或者,如果您的参数包含?&等字符,则需要额外转义。一个更完整的解决方案在这里:http://www.eggheadcafe.com/articles/20020107.asp

简单的方法来获取路径名,包括参数只是首先通过使用location.href得到完整的url像var path = window.location.href,然后像这样拆分这个url(var pathQyeryPramater = path.split(“/”)[3])根据您的要求。这个pathQyeryPramater将只返回带有查询参数的整个路径,然后跟随上面的答案。