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

时间:2012-04-20 02:52:16

标签: android jquery jquery-mobile cordova

我真的很讨厌问我之前被问过的问题。这是我认为其他人必须遇到的问题之一,but having searched stack overflow,所谓的解决方案都不适合我,所以我必须做错了......

我有一个非常简单的应用程序设置。 index.htm和terms.htm。 test.htm中有一些文本数据。我在加载内容后的适当时间设置了$.support.cors = true;$.mobile.allowCrossDomainPages = true;

首先,我尝试使用$('#elementid').load('terms.htm');将terms.htm的数据加载到索引中的元素中(test和index都在同一个root / 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);
       }
});

4 个答案:

答案 0 :(得分:0)

我不是百分百肯定,但我认为这是ICS 4.0.3的问题。在4.0.2 ajax似乎工作得很好,但对我来说也是4.0.3,没有ajax。像你一样,我已经尝试了一切,没有任何效果......

我正在使用PhoneGap btw。 Ajax在标准浏览器中运行良好,但在PhoneGap应用程序中无效。

答案 1 :(得分:0)

如果您在Chrome中运行应用程序   然后您需要禁用-web-security并启用加载本地文件,请参阅Cross-domain requests using PhoneGap and jQuery doesn't work 否则 Safari或模拟器或网络服务器   然后它应该有效

答案 2 :(得分:0)

link。我有同样的问题,这解决了它。另外,我认为他们在1.6.0中修复了它,但我现在在iOS上看到了与PhoneGap 1.6.1相同的问题。

答案 3 :(得分:0)

这只是一个很长的镜头,但你说“我设置$ .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>

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