jQueryMobile运行在Android / PhoneGap上拒绝.load / .ajax



我真的很讨厌问我觉得以前被问过一千次的问题。这是我觉得其他人一定遇到过的问题之一,但是在搜索堆栈溢出之后,没有一个所谓的解决方案对我有用,所以我一定做错了什么......

我有一个非常简单的应用程序设置。 索引.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>

就像我说的,只是一个猜测...

最新更新