对不起那么完美的标题感到抱歉,但我不知道如何用几句话来解释我的问题。搜索互联网并没有给我带来解决方案,所以我想在这里试试。
我有一个基于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。如果您需要更多信息来回答这个问题,请询问......
非常感谢!
最好的问候......