3

我想向我的远程服务器发出 AJAX 调用,上传一些参数并下载一些内容。此脚本在浏览器中完美运行,但不适用于 PhoneGap(在 Ripple、chrome 上测试)。

我研究了以下问题和解决方案:

PhoneGap 未发出 AJAX (jsonp) 请求

jQuery、ajax 和 jsonp 的问题

阿贾克斯调用:

$.ajax({
        url: "https://mydomain.com/file.php",
        data: {test:"test"},    
        type: 'GET',
        dataType: 'jsonp',
        timeout: 5000,
        success: function(data){
            if(data['var'] == 'correct'){ 
                notifyAlert('correct','Login');
            }else{
                notifyAlert('incorrect','Login');
            }       
        },          
        error: function(x,e){
            if(x.status==0){
                notifyAlert('You are offline!!\n Please Check Your Network.', 'Error');
            }else if(x.status==404){
                notifyAlert('Requested URL not found.', 'Error');
            }else if(x.status==500){
                notifyAlert('Internel Server Error.', 'Error');
            }else if(e=='parsererror'){
                notifyAlert('Error.\nParsing JSON Request failed. '+x.status, 'Error');
            }else if(e=='timeout'){
                notifyAlert('Request Time out.');
            }else {
                notifyAlert('Unknow Error.\n'+x.responseText, 'Error');
            }       
        }
    });

远程服务器代码:

$record = array('var' => 'correct');
echo $_GET['callback'] . '(' . json_encode($record) . ');';

我的 config.xml 文件有:

<access origin="https://mydomain.com" />

在 Ripple(模拟器)上进行测试时,它给了我状态 0 错误。在我的本地服务器上(通过浏览器)测试相同的脚本时,它会给我正确的 var 警报。

我还测试了一个 json 调用,它在模拟器中完美运行,但是当我将 apk 上传到手机时它不起作用。与上述 jsonp 问题的结果相同(状态 0 错误)。

4

1 回答 1

0

终于发现问题了。这是我的 SSL 证书的问题。我在带有未签名证书的服务器上进行了测试,结果给了我不正确的响应。使用签名证书解决了我所有的问题..

于 2013-12-16T10:33:53.443 回答