Phonegap - 获取外部网站数据?

Posted

技术标签:

【中文标题】Phonegap - 获取外部网站数据?【英文标题】:Phonegap - Fetch External Website Data? 【发布时间】:2012-07-02 11:13:54 【问题描述】:

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

);

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

【问题讨论】:

查看 Chrome 调试器或 Firebug 中的网络部分,您应该得到某种网络响应(200OK 或其他状态代码)。它说什么? 您能否验证该 URL 是否正在返回内容?启用 Firebug 后,在尝试调用 parseJSON 之前尝试执行 console.log(data); 【参考方案1】:

确保您的服务器返回正确的标头。在我的服务器返回以下标头之前,我在 phonegap 应用程序中遇到了类似的问题:

访问控制允许来源:*

访问控制允许方法:*

访问控制最大年龄:1728000

访问控制允许标题:*

您可以在https://developer.mozilla.org/en/http_access_control阅读更多相关信息

还可以查看http://api.jquery.com/jQuery.support 属性cors

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

【讨论】:

【参考方案2】:

如前所述,确认您是否从服务器收到任何响应(无论是成功还是错误),我使用 Chrome 中的开发人员工具。

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

【讨论】:

以上是关于Phonegap - 获取外部网站数据?的主要内容,如果未能解决你的问题,请参考以下文章

从外部 aspx 网站调用 phonegap smscomposer

如何通过绝对路径访问我的应用程序文件 - windows phone - Phonegap/Cordova

使用 Jquery Json P 将外部数据加载到 phonegap

如何获取phonegap最新版本

(ios + phone gap) - 使用仪器配置最终应用程序

Windows Phone 8 PhoneGap 条码扫描仪