PhoneGap 构建和 XMLHttpRequest
Posted
技术标签:
【中文标题】PhoneGap 构建和 XMLHttpRequest【英文标题】:PhoneGap Build and XMLHttpRequest 【发布时间】:2016-01-19 13:36:46 【问题描述】:作为背景 - 在此之前,我为 ios (Swift) 编写了一些原生应用程序,但这是我使用 PhoneGap 的第一个应用程序。我的目标是运行 android 5.0 的华为 P8 lite。我正在使用 PhoneGap Build。
所以这是我的问题: 我在网络服务器服务器上运行了一些 cgi 脚本。 我可以通过打开一个特定的网站来执行这些脚本。 我写了一个小的 javascript 函数,它向服务器发送一个 HttpRequest。 PhoneGap-Build 用于从我的 html 代码生成应用程序。
问题是,它在我的笔记本电脑上运行良好(通过电缆连接或通过 WIFI),但只要我在手机上尝试(通过 WIFI)它就什么也做不了。 这是我的功能:
function openGate()
var xhttp;
if (window.XMLHttpRequest)
xhttp = new XMLHttpRequest();
else
alert("Error");
xhttp.open("GET", "http://172.17.113.100/cgi-bin/main.py?mod=door&op=open", "true");
xhttp.send(null);
相关的 HTML 文件已加载到我的移动设备上。当按下按钮时调用此函数。以下是相关代码:
<!DOCTYPE html>
<html>
<head>
<title>Steuerung-Screen</title>
<scripe src="js/steuerung.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="css/steuerung.css" />
</head>
<body>
<div class="Steuerung">
<h1>Steuerung</h1>
</div>
<div class="Control">
<table>
<tr>
<td>
<button type="button" id="up" onClick="openGate();"> <img src="img/Arrow_Up_nice.png" > </button>
</td>
</tr>
</table>
</div>
</body>
感谢您的宝贵时间和帮助!
【问题讨论】:
你在使用whitelist
插件吗?
不,我不这样做,但我会尝试使用它并允许所有域
请在您的帖子中回答以下问题。这是您的第一个应用程序吗?您的目标平台及其目标版本是什么?安卓4、5、6? iOS 7、8、9?你在使用CLI, SDK or Build 吗?一旦您回答了帖子中的问题,请在 cmets 中回复,以便我知道您已在帖子中添加了信息。还有更多问题
我已添加所需信息,谢谢您的帮助
谢谢,为了便于阅读,我做了些许重新格式化。您也可以将此详细信息添加到您的帖子中吗?从您的服务器加载的页面 - 其中包含一些 javascript。您发布的代码不清楚,该代码是否来自服务器,加载到移动设备上?是这个顺序吗?那是你正在发生的事情吗?再次,请在您的帖子中回答以下问题,并在评论中跟进 TIA Jesse
【参考方案1】:
@f-丹尼尔, 你有几个常见的错误。
没有为您的构建设置版本。这具有破坏代码的副作用,并且没有博客文章可以让您知道这一点。尝试通过phonegap-version
为您的构建设置版本。也为您的插件设置版本。
“不设置版本”的一个副作用是您必须使用whitelist
插件和相关部件。它没有很好的记录。 (我有笔记。见下文。)注意:这可能会立即解决您的问题。
打开网站套接字时的注意事项。 (注意,这是获取数据的推荐方式。但是,如果 Google 或 Apple 认为您正在编写网站包装器,他们可能会拒绝您的应用程序。(注意:我在下面的链接中直接引用了 Apple。)
修复:
在 #1, 阅读:
config.xml The Basics config.xml Preferences:Multi-Platform config.xml Plugins在#2,
您需要申请whitelist
系统。从Cordova Tools 5.0.0(2015 年 4 月 21 日)开始需要它。对于Phonegap Build,这意味着从cli-5.1.1
(2015 年 6 月 16 日)开始
将此添加到您的config.xml
<plugin name="cordova-plugin-whitelist" source="npm" spec="1.1.0" />
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" /> <!-- Required for iOS9 -->
请注意,您的应用现在不安全。保护您的应用由您决定。
将以下内容添加到您的index.html
<meta http-equiv="Content-Security-Policy"
content="default-src *;
style-src * 'self' 'unsafe-inline' 'unsafe-eval';
script-src * 'self' 'unsafe-inline' 'unsafe-eval';">
请注意,您的应用现在不安全。保护您的应用由您决定。
当您准备好确保您的应用安全时,请阅读以下内容:HOW TO apply the Cordova/Phonegap the whitelist system
在#3, 阅读第 5 篇(尤其是第 5 篇的最后一部分,参见 Apple 的引用)Top Mistakes by Developers new to Cordova/Phonegap
现在太累了,无法添加。我会在 12 小时内检查。
【讨论】:
以上是关于PhoneGap 构建和 XMLHttpRequest的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Windows phone 和 iOS 中安装 Phonegap 构建的应用程序
ionic 和 phonegap 构建(3.5.0)不显示自定义启动画面
PhoneGap 上 Facebook 登录的哈希键 构建和 PhoneGap 混合应用程序的 OAuth URL Facebook 登录