Phonegap - 获取外部网站数据?

3
我将使用Phonegap(Android)和Javascript / JQuery创建一个应用程序。 我有一个Javascript页面,我想从外部网页中读取文本。 不知何故,我无法使其正常工作。
我的应用程序中的Javascript页面:
$.mobile.allowCrossDomainPages = true;

$(document).ready(function () {

$.ajax({
        url: 'myexternalserver.com/test.php',
        dataType: 'jsonp',
        jsonp: 'jsoncallback',
        timeout: 5000,
        success: function(data, status){

            alert("connected");

        },
        error: function(){

            alert("jsonp error");
        }
        });
});

我的PHP页面位于外部服务器上

// $out is an array of text

echo $_GET['jsoncallback'] . '(' . json_encode($out) . ');';

我修改了我的Cordova.xml文件,以包含以下内容。
<access origin="http://myexternalserver.com" subdomains="true"/>

我还需要执行其他步骤吗?我总是遇到连接错误。
谢谢。
编辑:
我已经修改了我的JavaScript页面,如下所示。
$.getJSON("http://myexternalserver.com/test.php?var=test&callback=?", {
success:function(data){
            alert("Working");

            var ot = jQuery.parseJSON( data );

            alert(ot);

}, error: function() { 
    alert("Error"); 
}
});

我现在收到了“工作中”警报,但数据读取为null。

看一下Chrome调试器或Firebug中的网络部分,你应该会得到某种网络响应(200OK或其他状态码)。它显示了什么? - Nathan Fig
你能验证URL是否返回内容吗?启用Firebug,在尝试调用parseJSON之前,尝试执行console.log(data); - olore
2个回答

0

确保您的服务器返回正确的头信息。我曾经在使用PhoneGap应用程序时遇到过类似的问题,直到我的服务器返回以下头信息:

Access-Control-Allow-Origin: *

Access-Control-Allow-Methods: *

Access-Control-Max-Age: 1728000

Access-Control-Allow-Headers: *

您可以在https://developer.mozilla.org/en/http_access_control上了解更多相关信息。

还要检查http://api.jquery.com/jQuery.support属性cors

要在不支持cors但允许跨域XHR请求(Windows小部件等)的环境中启用跨域请求,请设置$.support.cors = true;


0

如已经提到的,确认是否从服务器收到任何响应,无论是成功还是错误,我使用Chrome中的开发者工具进行检查。

如果您正在使用创建应用程序时生成的默认index.html文件,请检查并允许“myexternalserver.com”在“内容安全策略”(CSP)规则中,除了您当前的设置之外。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接