-2

刷新 JQUERY MOBILE 页面时会发生什么?我使用 ajax 在page1
上名为“json”的变量中获取数据,当用户单击特定动态生成的元素时,我将单击元素的 id 存储在会话变量中,并存储到我用来生成列表的新 JQM page2中,一切正常,即使后退和前进按钮也能正常工作,但是如果我刷新page2 然后 变得未定义,这是我得到的错误:changePage()json.thepropertyiwantjson.thepropertyiwant

Uncaught TypeError: Cannot read property 'responseData' of undefined

我在单个 html5 页面模型中使用多页

编辑:

  • 我使用了变量名json,而不是JSON像那样输入它来强调,但是现在我认为这很愚蠢!
  • 我也发现了我的问题。我的错误是我假设页面刷新会调用pageinit我所在的页面,但它的工作方式与正常的 html 页面刷新并没有什么不同, document.ready每次都会触发,然后pageinit是我所在的页面。
    有没有办法监听 pagerefresh事件并覆盖其正常功能?
4

2 回答 2

0

我相信您在某些情况下会生成 page2 的动态内容。我相信事件是pageinit或pagecreate。这些事件只触发一次(如果您将 ajax 页面加载设置为 true)。发生的情况是您在加载 page1 时请求数据(类似于 pageinit?)当您刷新 page2 时,数据不存在,因为您请求数据的事件没有触发,这是完全正常的,因为当您刷新page2,page1与它无关。发布您请求数据的代码部分,以及为 page2 生成动态内容的部分以获取更多信息。

于 2013-07-24T06:48:24.340 回答
0

嗯...这里发生了一些问题。

  • 对于初学者,不要使用名为“JSON”的变量。这不好 - 已经有一个名为 JSON 的全局对象用于解析和编码 JSON!你可能会不小心覆盖它。

  • 正如您所发现的,如果您将数据存储在 javascript 中的变量中 - 该变量仅在当前页面的内存中。如果刷新页面,则该变量将不再在内存中。

    但这与 jQuery Mobile 没有任何关系。这就是 Web 浏览器的工作方式——在内存中创建的 javascript 结构不会在页面刷新之间保持不变。

    通常,您需要使用 localStorage 或 cookie 自己保存数据,以使其在页面刷新之间保持不变。

  • 通常,无论如何您都不会刷新 jQuery Mobile 应用程序。所以前一点通常不是太大的问题。用户刷新页面就像重新启动应用程序一样。

    应用程序应该在开始时重新加载它需要的任何数据,即从 localStorage、cookie 或进行一些新的 ajax 调用以重新加载。您必须编写该逻辑。

于 2013-07-24T07:06:41.200 回答