jQuery mobile:URL查询字符串不会更改

时间:2011-11-14 23:25:41

标签: url mobile jquery-mobile

我正在玩jQuery Mobile并遇到一些(对我而言)奇怪的行为。

我有一堆链接,每个链接都指向同一个jQM页面#otherpage,但是URL查询字符串的值不同,例如#otherpage?q=foo#otherpage?q=bar,等等。对其他页面的更改工作正常,但查询字符串在点击之间粘连,因此,如果我首先单击指向#otherpage?q=foo的链接,然后返回到第一页,则所有后续页面更改为#otherpage将无论当前点击的链接的href是什么,都有q=foo

jsFiddle似乎没有对jQM的支持所以我在这里举了一个例子:http://cpak.se/dump/location-search-test.html

我在Mac上的Chrome和Safari中试过这个。

我使用查询字符串在页面之间传递简单数据,因为我有其他代码连接到页面更改事件,这或多或少都不知道早期代码可能做了什么。如果我不能使这个工作,我将不得不找到另一种传递数据的方法......:P

干杯!

/克里斯托弗

3 个答案:

答案 0 :(得分:4)

禁用jQm似乎是在浏览器中正确更新url参数的最简单方法。例如。在链接锚点中添加data-ajax="false"而不使用$.mobile.changePage

<a href="#page?id=1" data-ajax="false">

在动态应用中,事先修改href的值。

答案 1 :(得分:3)

我一直在寻找这个问题,因为它确实有点奇怪。有一个未解决的问题:https://github.com/jquery/jquery-mobile/issues/2859

Atm jQuery Mobile建议不要使用查询参数:

  

我们目前不支持查询参数作为哈希的一部分   片段,虽然这是经常讨论的事情   在内部,位于功能请求列表中。

他们建议使用像:

这样的插件

但是,有一个解决方法,因为DOM DOES中活动页面的data-url发生了变化,您可以使用$(".ui-page-active").attr("data-url");检索此问题我已经在您的网站上对此进行了测试,它为我提供了所有3个唯一网址

答案 2 :(得分:0)

jQuery Mobile默认情况下不允许将查询字符串参数传递给内部链接的页面。查看本文档页面的最底部(页面底部的第二个项目符号):http://jquerymobile.com/demos/1.0rc3/docs/pages/page-navmodel.html

  

jQuery Mobile不支持传递查询参数   内部/嵌入页面,但您可以添加两个插件   您的项目是否支持此功能。有一个轻量级page params plugin和一个功能更全面的jQuery Mobile router plugin,可用于backbone.js或spine.js。