我正在寻求帮助以解决我在社区phoneGap网站上发布的问题:
http://community.phonegap.com/nitobi/topics/my-phonegap-app-cannot-access-my-web-service?rfm=1
但基本上总结一下,我正在用我的phoneGap应用程序慢慢测试水域,我想在我的服务器上访问一个JSON文件并解析它并在我的应用程序中提醒它。到目前为止,我无法让它发挥作用。
我尝试过的事情: 1)在我的phoneGap文件的config.xml文件中,我有以下标记:access origin =“http://104.236.6.175”subdomains =“true”
2)使用JavaScript访问JSON文件的多种不同方式,但目前这是我的代码:
$("#requestJSON").click(function () {
var xmlhttp = new XMLHttpRequest();
var url = "http://104.236.6.175/test/test1.json";
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var myArr = JSON.parse(xmlhttp.responseText);
myFunction(myArr);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
function myFunction(arr) {
var out = "";
var i;
for(i = 0; i < arr.length; i++) {
out += '<a href="' + arr[i].url + '">' +
arr[i].display + '</a><br>';
}
alert(out);
$("#resultLog").html(out);
}
});
非常感谢任何帮助。感谢。
答案 0 :(得分:2)
我看到你正在使用jQuery。如果您还在为UI框架使用jQuery Mobile,则在获得设备准备通知后,您需要致电$.mobile.allowCrossDomainPages = true;
。您也可以将访问代码设置为<access origin="*" />
以允许所有内容并稍后对其进行微调。
此外,使用jQuery访问返回JSON数据的更简洁方法可能是这样的:
$.get("http://104.236.6.175/test/test1.json", function (data, status) {
var arr = JSON.parse(data);
});
答案 1 :(得分:2)
我快速浏览了一下你在phonegap社区论坛上发布的帖子,因为在你有机会回答我的问题之前我已经有几个星期了,我会在这里给你一些提示
首先,尝试使用
<access origin="*" />
在config.xml中。它可能不是最安全的场景,但我建议在事情不起作用时使用*,然后通过限制到您需要的域来获得更多安全保障。
在最新版本的cordova / phonegap中,您需要拥有插件&#34; cordova-plugin-whitelist&#34;能够访问远程服务器。如果没有这个,所有通信都会被切断。
如果我没有弄错,你应该在config.xml中添加这一行来添加插件(我不再使用build了,所以我无法检查):
<gap:plugin name="cordova-plugin-whitelist" source="npm"/>
有关此更改的更多信息,请参阅最新的cordova / phonegap here和here或here。
最后,要获得有关正在发生的事情的更多信息,访问日志非常有用。你可以通过单击phonegap build中的debug复选框,或者在你的计算机上使用adb logcat来实现weinre(需要在你的设备上允许usb debuging并在你的计算机上安装驱动程序)。如果您这样做,您可能会收到一条很好的错误消息,说明您正在进行的操作。