我有一个要转换的 CodeIgniter Web 应用程序(更新:我正在尝试覆盖 JQM UI)[到 jQuery Mobile 应用程序]。我在设置链接到我的 CodeIgniter 控制器的选项卡时遇到问题。
这是我的“header.php”视图中的代码 - 在<div data-role="page"></div>
. 这是由一个主控制器调用的,它工作正常。现在,问题是:我正在尝试设置我的 jQuery Mobile 导航栏选项卡来调用一个名为收件箱的新控制器。
<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,链接可以正常工作并触发收件箱 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 确实加载了,但“收件箱”链接仍会通过 CI生成 404 页面。
更新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 下的新文件夹时,这个目录变得不正确。