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"); 
}
});

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

4

2 回答 2

0

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

访问控制允许来源:*

访问控制允许方法:*

访问控制最大年龄:1728000

访问控制允许标头:*

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

另请查看http://api.jquery.com/jQuery.support属性cors

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

于 2012-07-31T09:36:14.827 回答
0

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

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

于 2018-09-27T09:50:20.793 回答