Jquery mobile Jquery移动页面导航会破坏基本url并导致主页上的ajax失败
我的主页在这里: 我的登录页面在这里: php使用ajax获取数据以响应tap事件。在我导航到登录页面,然后返回主页之前,这一切都很正常。在进入登录页面并返回之后,相关路径变得混乱,以至于ajax在错误的位置查找服务器文件 以下是ajax:Jquery mobile Jquery移动页面导航会破坏基本url并导致主页上的ajax失败,jquery-mobile,Jquery Mobile,我的主页在这里: 我的登录页面在这里: php使用ajax获取数据以响应tap事件。在我导航到登录页面,然后返回主页之前,这一切都很正常。在进入登录页面并返回之后,相关路径变得混乱,以至于ajax在错误的位置查找服务器文件 以下是ajax: 1. function get_more_data() { 2. more_data_index += 15; 3. var formData = "index=" + more_data_index; 4.
1. function get_more_data() {
2. more_data_index += 15;
3. var formData = "index=" + more_data_index;
4. $.ajax({
5. type: "POST",
6. url: "genxml.php", // file located here: http://www.mydomain.com/main/genxml.php
7. cache: false,
8. data: formData,
9. dataType: "xml",
10. success: showFiles3,
11. error: onErrorMoreData
12. });
13. }
在我从login.php导航回main.php后,ajax会尝试发布到错误的位置:
(genxml.php不在“pages”子目录中;它在主目录中。)
我尝试更新ajax以使用绝对路径:
url:“http://www.mydomain.com/main/genxml.php"
这使得post成功了,但是我的数据解析失败了,因为主文件中的相关路径用于图像之类的内容。因此,不是从这里获取图像:脚本试图从这里获取图像:
我发现有一些帖子有类似的问题,但我还没有找到解决办法。我还尝试阅读了jquerymobile文档,jquery开发人员很可能试图在这里讨论这个问题,但我承认我并不完全理解这一页上的所有内容:
如果有人能帮忙,我会非常感激。谢谢
另外,这个问题发生在Android和Google Chrome上,但在Firefox上没有 您为什么不使用以下选项之一:
我已经创建了一个你正在尝试做的工作示例。你应该可以看看这个,看看我做了什么。确保签出master.js。我认为,在您的情况下使其工作的关键是将ajax调用嵌套在“pageshow”事件中,以确保您的baseURL已经更新。您可以在以下位置下载示例: 在实际操作中,它将weather.xml与相对URL一起拉入
$("div").live("pageshow", function(){
var $page = $(this);
get_more_data();
});
最后,我对所有ajax查询和img src属性都使用了绝对地址。这真的很痛苦。我很想知道如何在jquery mobile框架中成功地使用相对路径。如果其他人这样做,我建议使用javascript变量,这样您只需要在一个位置编辑路径。i、 e.:var base path=“”;我想我也有同样的问题。在Chrome的开发者工具窗口中查看DOM,同时单击启用ajax的链接,我看到url从更改为,这是正确的,但随后它又更改回。后续导航失败。这一定是一个常见的问题,我很惊讶没有解决。像你一样,我不确定我是否理解你提到的导航网页。你已经创建了两个单独的页面,每个页面上都有JQM。JQM有一个ajax系统,允许您从只包含页面内容的文件中提取HTML。这种基本url问题发生在后一种情况下。不过,使用jquery mobile代码对每个页面进行编码是一种最佳做法,因为现在库中存在url重写,地址栏中显示的url将仅反映刚刚加载的页面(如果您的系统支持)。这样可以保持URL的干净,并更好地添加书签。因此,如果用户刷新页面,它将只加载最新的页面。而不是像您预期的那样,在基本页面之后是ajaxed页面。将jquery mobile保留在每个预期的移动页面上也可以确保无论用户的入口点是什么,他们都能获得正确的体验。此外,这允许真正的渐进式增强,因为每个页面都可以独立运行,所以只有B、C类和更低级别支持的系统仍然可以查看您的内容。这是否进一步澄清了问题?在每个页面上包含jquery移动代码没有不良影响,第一个页面之后的页面仍将由Ajax加载。在每个页面上包含库不会停止该页面或任何其他页面的Ajax加载。只是让它更加防弹。而且,这不是这个解决方案有效的原因。我延迟了Ajax的加载,直到页面显示启动,这修复了我认为对您来说是一个时间问题。因为,当以编程方式重定向时,您无法知道当前的基本目录是什么,因为它在每次changePage调用中都会不断变化。