在 Android / PhoneGap 上运行的 jQueryMobile 拒绝 .load / .ajax
Posted
技术标签:
【中文标题】在 Android / PhoneGap 上运行的 jQueryMobile 拒绝 .load / .ajax【英文标题】:jQueryMobile running on Android / PhoneGap refuses .load / .ajax 【发布时间】:2012-05-01 15:33:29 【问题描述】:我真的很讨厌问我觉得以前被问过一千次的问题。这是我觉得其他人一定遇到过的问题之一,buthavingsearchedstackoverflow,没有一个假设的解决方案对我有用,所以我一定做错了什么.....
我有一个非常简单的应用设置。 index.htm 和 terms.htm。 test.htm 中有一些文本数据。我在加载内容后的适当时间同时设置了$.support.cors = true;
和$.mobile.allowCrossDomainPages = true;
。
起初我尝试使用$('#elementid').load('terms.htm');
将terms.htm 的数据加载到索引内的一个元素中(测试和索引都在同一个根/assets/www/ 目录中,我的webview 加载索引oncreate)但绝对没有发生任何事情.所以我选择尝试 .ajax,这样我至少可以收到一条错误消息,而我得到的只是“错误”。当然,可以在 DroidGap 上使用 JQ 加载本地文本资源吗?
$('#header').load('terms.htm');
$.ajax(
type:"GET",
timeout:10000,
async: false,
url: "terms.htm",
success: function(data)
$('#header').html(data);
,
error: function(xhr,msg)
alert( msg);
);
【问题讨论】:
【参考方案1】:我不能 100% 确定,但我认为这是 ICS 4.0.3 的问题。在 4.0.2 上,ajax 似乎工作得很好,但对我来说,在 4.0.3 上也是如此,没有 ajax。和你一样,我已经尝试了所有方法,但没有任何效果..
顺便说一句,我正在使用 PhoneGap。 Ajax 在标准浏览器中运行良好,但在 PhoneGap 应用程序中却不行。
【讨论】:
是的,我也在使用 4.0.3。我想知道它是否适用于 4.0.4...时间来闪烁?【参考方案2】:如果您正在 Chrome 中运行您的应用程序 那么你需要禁用web-security并启用加载本地文件见Cross-domain requests using PhoneGap and jQuery doesn't work Else if Safari 或模拟器或网络服务器 那么应该可以了
【讨论】:
该应用程序在我的移动 android 应用程序中嵌入的 WebView 中运行。【参考方案3】:看到这个link。我有同样的问题,这解决了它。另外,我认为他们在 1.6.0 中修复了它,但我现在在 ios 上使用 PhoneGap 1.6.1 看到了同样的问题。
【讨论】:
【参考方案4】:这只是一个长镜头,但你说“我在加载内容后的适当时间设置了 $.support.cors = true; 和 $.mobile.allowCrossDomainPages = true;。 ”。 jQuery 移动文档说 you have to set your global configuration before you load JQM:
因为 mobileinit 事件会立即触发,所以您需要绑定您的事件 加载 jQuery Mobile 之前的处理程序。在以下链接到您的 javascript 文件 顺序:
<script src="jquery.js"></script>
<script src="custom-scripting.js"></script>
<script src="jquery-mobile.js"></script>
在你的情况下,这将是:
<script src="jquery.js"></script>
<script>
$(document).bind("mobileinit", function()
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
);
</script>
<script src="jquery-mobile.js"></script>
就像我说的,只是一个猜测......
【讨论】:
嗨丹尼尔;感谢您的意见。确实似乎在 JQM 之前设置了 cors 和 aCDP,但都没有效果 =X以上是关于在 Android / PhoneGap 上运行的 jQueryMobile 拒绝 .load / .ajax的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Firebase 在 Android 模拟器上运行时在 PhoneGap 应用程序中返回 404 错误?
Android 运行 Phonegap 应用程序 - 屏幕模糊/调整大小
在 Android / PhoneGap 上运行的 jQueryMobile 拒绝 .load / .ajax
Web SQL 连接查询不能始终在 Phonegap Android 上运行