jQuery Mobile应用程序中带有缓存页面的奇怪行为

时间:2012-10-25 13:23:14

标签: asp.net-mvc-2 jquery-mobile

对不起那么完美的标题感到抱歉,但我不知道如何用几句话来解释我的问题。搜索互联网并没有给我带来解决方案,所以我想在这里试试。

我有一个基于jQuery mobile 1.1.1(jQuery 1.7.1)和MVC2的移动应用程序。有两个文件代表两个页面。打开第二页时,第一页保留在缓存/ dom中。两个页面/视图都是从同一个控制器'myController'创建的:

第1页(第一页):

<div id="page1" data-role="page" data-dom-cache="true">
    ...
    <a href="~/myController/page2" data-role="button" data-ajax="true">...</a>
    ...
</div>

第2页(第二页):

<div id="page2" data-role="page">
    ...
</div>

第一个问题:第2页我有一个调用服务器mvc动作的ajax函数:

$.ajax(
 {
 type: "GET",
 url: "serverAction?bar=foo,
     success: function (res) {
    ...             
     }
});

当调用page1然后转到page2时,ajax函数在控制器'myController'中调用服务器操作'serverAction' - url看起来像这样:

http://localhost:xxxxx/myController/serverAction?...

当调用page1,转到page2并通过F5刷新站点时,相同的ajax函数使用错误/无控制器调用服务器操作。网址看起来像这样:

http://localhost:xxxxx/serverAction?...

为什么这种行为以及如何避免它?

第二个问题:因为我需要我的page1在缓存中,因为page2更新了page1的一些属性,我重定向回到第一页,如下所示:

<a rel="external" href="#page1">...</a>

这是完美的,直到我刷新,因为那时网站是新加载的,而page1不再存在。因为这个我写了一些javascript,在page2的pageinit上重新加载page1:

$(this).bind('pageinit', function () {
    if ($("#page1").length <= 0) 
        $.mobile.loadPage("~/myController/page1", { showLoadMsg: false });
});

在大多数情况下都有效,但有时会出现一种奇怪的行为:从第1页到第2页,刷新网站(并等到第1页正确重新加载)。然后当我点击看起来像这样的后退链接

http://localhost:xxxxx/myController/page2#page1
出现

page1,但是在循环中重新加载... url然后看起来像:

http://localhost:xxxxx/myController/page1#page1
我整天都在努力解决这两个问题,但没办法。我真的不知道发生了什么。

感谢所有帮助和tipps。如果您需要更多信息来回答这个问题,请询问......

非常感谢!

最好的问候......

0 个答案:

没有答案