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