オフラインで動作する HTML/JS アプリケーションを作成しました。これは SD カードに保存され、デフォルトの 4.1 Android ブラウザを使用して実行されます。
インターネットでホストするためにjQueryを使用してAjaxリクエストを作成しています。私はローカルファイルシステムから実行しているので、明らかにクロスドメインリクエストです。サーバーには、このような CD 要求を可能にするヘッダー操作に基づくメカニズムがあります。厄介なコードの一部:
$.ajax({
type: "POST",
crossDomain: true,
data : formData,
cache: false,
url: "http://someurlwhichhandlescrossdomain.com",
success: function(data){
alert("hurrayy!");
},
error: function(xhr, ajaxOptions, thrownError) {
alert("bah :/");
alert(xhr.status);
alert(thrownError);
}
});
問題は、データが正しく送信され、サーバーが要求を正しく登録しているにもかかわらず、エラー関数が常に実行されることです。xhr.status は常に 0 で、 throwError は空です。
デスクトップ上の Chrome でも同じコードが正しく動作します (アラート「万歳」)。
現在、私は に基づく回避策を使用してnavigator.onLine
います。値が true の場合、データがサーバーに正しく送信されていると想定します (サーバーから何も読み取る必要がないため)。ただし、接続は機能しているがサーバーが機能していない場合、私はそれを処理できないため、このソリューションは悪いです。
何か案は?
ありがとう、カロル