3

リモート サーバーに AJAX 呼び出しを発行し、いくつかのパラメーターをアップロードして、いくつかのコンテンツをダウンロードしたいと考えています。このスクリプトはブラウザでは完全に機能しますが、PhoneGap では機能しません (Ripple、Chrome でテスト中)。

次のような問題と解決策を見てきました。

PhoneGap が AJAX (jsonp) リクエストを発行しない

jQuery、ajax、および jsonp に関する問題

Ajax 呼び出し:

$.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 に答える