【问题标题】:Plain old query string with jquery-address带有 jquery-address 的普通旧查询字符串
【发布时间】:2010-08-19 18:07:53
【问题描述】:

我正在为我的网站实施深度链接。

我想知道,为什么 jquery-address 不能只设置一个查询字符串,像这样:

www.mywebsite.com?search=keyword

当我使用时

$.address.parameter("search", "keyword")

jquery-address 设置如下 url:

www.mywebsite.com?search#/?keyword

为什么,它会这样做?

我只需要普通的旧查询字符串,就像我的第一个示例一样。

请帮忙!

【问题讨论】:

  • 出于兴趣,你为什么要使用 jquery 来做这样的事情?为什么不直接在javascript中设置window.location,这大概就是jquery正在做的事情?

标签: javascript jquery deep-linking jquery-address


【解决方案1】:

这些地址使用散列,这是因为它们是为客户端准备的。如果要操作查询字符串,可以使用query plugin。例如:

window.location.search = $.query.set('search', 'keyword');

编辑:

如果您想进行多项更改,您可以这样做,例如:

var newQuery = $.query.set('search', 'keyword');
// ...
newQuery = newQuery.set('another', 'value');
window.location.search = newQuery;

【讨论】:

  • 谢谢,它似乎与简单的设置案例一起工作。但是我在设置值时遇到了麻烦,用逗号分隔。此代码:window.location.search = $.query.set('search', 'keyword1,keyword2') 生成如下 URL:www.mywebsite.com?search=keyword1%2C%2Bkeyword2。 %2C 代码没问题,因为它是逗号,但 %2B 很奇怪,因为它是“+”号。因此,它设置 ?search=keyword1,+keyword2 而不是 ?search=keyword,keyword2
  • + 用于application/x-www-form-urlencoded 中的空间。但是,我不知道那个 URL 是否完全正确。
  • 嗯。设置 window.location 会强制重定向到修改后的 URL 并重新加载页面。可惜这种方式不适合我……
  • @Anton,您不能在不强制加载的情况下更改查询字符串。这就是 jquery-address(和其他代码)使用哈希(# 之后的部分)的原因。但是,您可以通过一次加载对查询字符串进行多项更改。我添加了一个例子。
  • 谢谢。我已经改用哈希值。现在一切正常。
猜你喜欢
  • 2019-03-12
  • 2021-12-07
  • 2016-04-25
  • 2014-04-22
  • 2016-08-15
  • 1970-01-01
  • 2016-06-18
  • 2010-12-31
  • 1970-01-01
相关资源
最近更新 更多