Phonegap 无法加载远程内容

Posted

技术标签:

【中文标题】Phonegap 无法加载远程内容【英文标题】:Phonegap can't load remote content 【发布时间】:2015-09-24 23:19:30 【问题描述】:

我在 PhoneGap 中构建了一个应用程序。我手动编码应用程序并将其上传到 phonegap 构建。 我目前仅在 android 上对其进行测试。 我的应用程序使用 Jquery Ajax 从我的服务器加载一些内容。在过去的 10 天里,这非常有效。今天,它刚刚停止。

我的应用程序无法再从任何服务器加载任何内容。这包括我的样式表(是的,我更喜欢将它托管在服务器上)和 Google 托管的 jquery。我通过添加 jquery.min.js 和客户端 style.css 文件解决了这些文件问题,但是我非常依赖的 $.ajax 调用不能成为客户端。

我的 config.xml 文件一直有

<access origin="*" />

相关文件中包含以下代码:

<body onLoad="loaded();"> .........


function loaded()
        alert("function called.");
        $.support.cors=true;

现在失败的代码如下所示:

var request = $.ajax(
               url: "http://myserver/somefile.php",
               method: "POST",
               data:  variable:value,
               dataType: "html"
             );

              request.done(function( msg )  alert(msg); 

还有人愿意来一趟吗?

【问题讨论】:

当您使用调试器测试应用程序时,您是否在 adb 控制台日志中收到任何错误? 每当我运行 weinre 调试时,我只看到“目标:无”并且页面标题是“目标未连接”。所以我没有能力使用构建调试工具进行调试 愚蠢的想法:尝试在您的 ajax 调用和 request.done 周围放置一个 try catch 并显示 alert 。可能有例外 谢谢,@Dilberted,作为您的建议,我刚刚添加了一些错误捕获。我得到一个非常通用的错误响应“错误”似乎无法获得错误代码。 您是否尝试将整个异常对象记录在警报消息中或仅记录属性。尝试警报(JSON.stringify(e)); -- e 是异常对象 【参考方案1】:

您是否安装了 cordova-whitelist-plugin 并在您的应用中添加了内容安全策略元标记?如果不是,那可能就是问题所在。 Cordova 4.0 或更高版本(Android 和 ios)需要此插件才能访问任何非 file:// URL。 https://github.com/apache/cordova-plugin-whitelist#content-security-policy

【讨论】:

@GRY,按照 Josh 的说法,这里有更多链接可以帮助您使用 white-list 插件。阅读 #10 of Top Mistakes by Developers new to Cordova/Phonegap 好的,所以这有点尴尬,但我不知道如何将这个插件添加到我的应用程序中。我从 GIT 下载了源代码,但似乎没有任何添加插件的示例。因为我使用的是 PhoneGap Build 服务,所以我的其他插件只是在我的 config.xml 文件中显示为 标记。如何将此插件挂接到我的项目中? 我的 Config.xml 文件只需要像这样加载插件:跨度> 很高兴您能够弄清楚如何使用 PhoneGap Build 安装插件并且它解决了您的问题。

以上是关于Phonegap 无法加载远程内容的主要内容,如果未能解决你的问题,请参考以下文章

phonegap oauthio 插件无法加载

无法从资产路径在 phonegap 项目中使用 jquery 加载 xml 文件

无法加载 phonegap 地理定位插件。将.jar 添加到类路径?

Cordova 加载远程 JavaScript

cordova-plugin-ad-admob 通过 phonegap 构建,无法加载和显示广告

从 phonegap1.2 加载远程 URL