2

私のアプリケーションは、Androidアプリにバンドルされているphonegap1.7.0とjquery1.7.1を使用しています。私のhtmlには、フォームを送信するときの1つを除いて正常に実行される複数のgetJson()呼び出しが含まれています。

$('#proposalForm1').submit(function(event){
    var formInput = $(this).serialize();
    $('#loader').show();
    $.getJSON("http://xxx.xxx.xxx.xxx:8282/Service004/user/jsProposalPage1.action",  formInput,function(data){
    $('#loader').hide();
    if(data.serviceErrorMsg == ""){
      window.location.replace("proposalDisplay.html");
    }
    else{
      alert(data.serviceErrorMsg);
    }
}).error(function(xhr){
        $('#loader').hide();
        alert(xhr.status);
        navigator.notification.alert(
            'Please try again later!',  // message
            doNothing,         // callback
            'Server Unavailable',            // title
            'Exit'                  // buttonName
            );
    });
    return false;
});

動作する場合もありますが、ほとんどの場合、エラーコード0が返されます。リクエストが行われたアプリサーバーは、リクエストを正常に受信し、Webサービスを呼び出します。Webサービスからの応答はアプリサーバーによって正常に受信されますが、phonegapアプリはstausコード0を報告します。誰か助けてくれませんか?アプリが電話のギャップではなくWebWorksを使用してブラックベリー用にバンドルされている場合にも同じ問題が存在します。Android2.3.3およびBlackberry9300カーブでテスト済み。

前もって感謝します、

4

1 に答える 1

0

$.getJSON 呼び出しを完全な $.ajax() 呼び出しに切り替え、タイムアウトをもう少し長く設定することをお勧めします。おそらく、Web サービスの応答に時間がかかりすぎることが原因です。

これが機能しない場合は、応答があるまで応答を待機するようにアプリ サーバーを構成する必要がある場合があります。ステータス コード 0 は、「応答が空だった (ヘッダーさえ返されなかったため)。これは、接続が受け入れられ、正常に閉じられたことを意味します (TCP FIN)」ことを意味します。

これを引き起こす可能性のあるものはいくつかありますが、おそらくあなたの場合はタイムアウトですが、ファイアウォールも原因である可能性があります(アプリサーバーが他のリクエストに対して機能していたため、可能性は低いです)。

于 2012-09-25T22:15:04.063 に答える