Phonegap - 获取外部网站数据?

时间:2012-07-02 01:18:20

标签: javascript jquery cordova jsonp

我正在使用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"); 
}
});

我现在得到“工作”警报,但数据读为空。

2 个答案:

答案 0 :(得分:0)

确保您的服务器返回正确的标头。我的phonegap应用程序有类似的问题,直到我的服务器返回以下标题:

Access-Control-Allow-Origin:*

访问控制 - 允许 - 方法:*

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;

答案 1 :(得分:0)

如前所述,请确认您是否从服务器获得成功或错误的响应,我为此使用了Chrome中的开发者工具。

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