在 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 上运行

Phonegap:解析不在 ios 或 android 上初始化

在 android 和 IOS 中运行 phoneGap 应用程序需要进行啥配置?