我的PhoneGap应用无法访问我的网络服务

时间:2015-05-27 17:15:10

标签: javascript android json cordova phonegap-build

我正在寻求帮助以解决我在社区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);
    }


    });

非常感谢任何帮助。感谢。

2 个答案:

答案 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 hereherehere

最后,要获得有关正在发生的事情的更多信息,访问日志非常有用。你可以通过单击phonegap build中的debug复选框,或者在你的计算机上使用adb logcat来实现weinre(需要在你的设备上允许usb debuging并在你的计算机上安装驱动程序)。如果您这样做,您可能会收到一条很好的错误消息,说明您正在进行的操作。