我有一个CodeIgniter网络应用程序,我正在尝试转换(更新:我正在尝试覆盖JQM UI)[到jQuery Mobile应用程序]。我在设置链接到我的CodeIgniter控制器的选项卡时遇到了问题。
这是我的“header.php”视图中的代码 - 在<div data-role="page"></div>
内。这由主控制器调用,工作正常。现在,问题是:我正在尝试设置我的jQuery Mobile导航栏选项卡来调用一个名为inbox的新控制器。
<div data-role="footer" data-position="fixed">
<div data-role="navbar">
<ul>
<li>
<a href='<?php echo base_url()."inbox"?>' data-ajax="false">Inbox</a>
</li>
</ul>
</div>
</div>
没有jQuery Mobile,链接工作正常并触发Inbox CodeIgniter控制器,但在我的header.php视图中启用了JQM,当我点击收件箱选项卡时,我得到一个“404 Not Found”页面。
更新 - html头中的这个jQuery代码:
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/all-mobile.css" type="text/css" media="screen"/>
<link rel="icon" href="<?php echo base_url(); ?>assets/images/logo.png" />
<link rel="apple-touch-icon-precomposed" href="<?php echo base_url(); ?>assets/images/logo.png" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
更新2:如果我在t.js中插入此代码以删除自动ajax链接:
$(document).bind("mobileinit", function(){
$.mobile.ajaxEnabled = false;
});
我的新头部html代码现在是:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="<?php echo base_url(); ?>assets/js/t.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
... jQuery Mobile确实加载了,但“收件箱”链接仍然会生成404页 CI 。
更新3:我确定这是一个本地问题。当我将CI代码和新的jQuery Mobile脚本上传到我的Web服务器时,链接到我的inbox.php控制器的选项卡确实实际上正常工作!有谁知道为什么它在使用MAMP的本地机器上不起作用?现在,似乎我无法使用此配置在本地开发和测试。有修复吗?
在jquerymobile.com/demos/1.2.0/docs/api/globalconfig.html上查看allowCrossDomainPages我添加了$ .mobile.allowCrossDomainPages = true;到jQuery初始化但它没有帮助运行MAMP的localhost服务器提供inbox.php控制器 - 仍然是404。
更新4:问题已解决。事实证明隐藏文件.htaccess中存在问题。要重写URI,它包含一个“RewriteBase / myapp-mobile /”;当我将它移动到htdocs下的新文件夹时,此目录变得不正确。
答案 0 :(得分:1)
使用jQuery Mobile的自动初始化 - 与其他jQuery项目(如jQuery和jQuery UI)不同, jQuery Mobile 加载后自动应用许多标记增强功能 (早在document.ready事件发生之前)。
和...
ajaxEnabled(boolean,default:true): jQuery Mobile 将自动处理链接点击并通过Ajax表单提交, 如果可能。如果为false,则也会禁用url哈希侦听, 和网址将作为常规的http请求加载。
看起来它会将所有链接视为ajax请求,除非您在false
函数中专门将该选项设置为mobileinit
,但您还没有。
使用以下此功能强制jQuery mobile将所有链接视为普通http
请求。
$(document).bind('mobileinit', function(){
$.mobile.ajaxEnabled = false;
// other options to enable on intialization
});