我正在使用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");
}
});
我现在得到“工作”警报,但数据读为空。
答案 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”设置。