jQuery Mobile:每次页面加载时如何读取查询字符串参数?

Posted

技术标签:

【中文标题】jQuery Mobile:每次页面加载时如何读取查询字符串参数?【英文标题】:jQuery Mobile : How to Read Query String Parameters Each Time Page Loads? 【发布时间】:2013-07-15 05:39:47 【问题描述】:

我对 jQuery 和 jQuery Mobile 完全陌生,并且遇到了问题。我有两个 html 页面,其中一个是项目列表。每个项目链接到主页,并添加 ?id=xxx 到 url。主页使用以下代码读取 id 并提供内容:

       $.urlParam = function(name)
   var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
   return results[1] || 0;
   

然后我将 id 打印到控制台使用

   console.log($.urlParam('id'));

页面第一次加载的 id 是正确的。当我加载列表并选择不同的项目时,URL 中的 id 会发生变化,但是与以前相同的 id 会打印到控制台并且内容不会更新。我认为这个问题可能与缓存有关。我尝试使用不同的函数(没有 RegExp)来读取 id,但它产生了同样的问题。

谢谢!

【问题讨论】:

你什么时候给这个urlParam打电话? 是的,请在您调用网址时说明。 urlParam 在加载页面内容的脚本开始时被调用。 【参考方案1】:
Why don't you use session storage (if its a mobile website) on the click event of the list item store this selected id into session storage and on the main page live get it back from storage, so you need not pass using query string, generally passing from query string is not safe, and you have limitations on how much data you can pass.

【讨论】:

谢谢,好建议,但我实际上通过在脚本中的函数之间传递变量来解决这个问题,这样就不需要查询字符串参数了。 太棒了!!!考虑一下您有一个列表页面和一个详细信息页面的场景,当您从列表导航到详细信息页面时,如果我们从函数传递参数,那么当在详细信息页面上并且为详细信息页面完成刷新或重新加载时,它会丢失参数值。尤其是在有移动网站的时候,所以我们继续进行会话存储,以便详情页可以独立获取参数。 我不认为刷新/重新加载经常发生在移动页面上。内容每周更新一次,页面只应在用户有意刷新时刷新。我了解会话存储的使用,但是变量是一种更简单的解决方案。

以上是关于jQuery Mobile:每次页面加载时如何读取查询字符串参数?的主要内容,如果未能解决你的问题,请参考以下文章

隐藏 Safari 组件时如何使用 jQuery Mobile 从错误加载页面中恢复?

jQuery Mobile 加载消息

jQuery Mobile - 窗口加载后跳转到顶部

如何查看后台加载的 jQuery Mobile?

jQuery Mobile:初次访问时页面未完全加载

页面加载时的 jQuery Mobile 对话框