我真的很讨厌问我觉得以前被问过一千次的问题。这是我觉得其他人一定遇到过的问题之一,但是在搜索堆栈溢出之后,没有一个所谓的解决方案对我有用,所以我一定做错了什么......
我有一个非常简单的应用程序设置。 索引.htm和术语.htm。测试中有一些文本数据.htm。我在加载内容后的适当时间设置$.support.cors = true;
和$.mobile.allowCrossDomainPages = true;
。
起初,我尝试使用 $('#elementid').load('terms.htm');
将术语.htm的数据加载到索引中的元素中(测试和索引都在同一个根/assets/www/目录中,我的 web 视图加载索引 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);
}
});
我不是 100% 确定,但我认为这是 ICS 4.0.3 的问题。在 4.0.2 上,ajax 似乎完全可以正常工作,但对我来说,在 4.0.3 上也是如此,没有 ajax。像你一样,我尝试了一切,但没有任何效果。
顺便说一句,我正在使用PhoneGap。Ajax在标准浏览器中运行良好,但在PhoneGap应用程序中则不能。
如果您在 Chrome 中运行应用 然后,您需要禁用Web安全性并启用加载本地文件,请参阅使用PhoneGap和jQuery的跨域请求不起作用否则如果野生动物园或模拟器或网络服务器 那么它应该可以工作
请参阅此链接。我遇到了同样的问题,这解决了它。另外,我认为他们在 1.6.0 中修复了它,但我现在在 iOS 上使用 PhoneGap 1.6.1 看到了同样的问题。
一个很长的镜头,但你说"我设置了两个 $.support.cors = true;和 $.mobile.allowCrossDomainPages = true;在加载内容后的适当时间。jQuery 移动文档说,在加载 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>
就像我说的,只是一个猜测...