私は一日中この問題と戦おうとしていて、いたるところでグーグルで検索しました。解決策が記載されたページが見つからないだけかもしれませんが、次のような問題と解決策を見てきました。
phonegap での Ajax 呼び出しが要求を送信しない
JQuery mobile + Phonegap : Ajax 呼び出しが Android Emulator で機能しない
そこにある解決策のどちらも私の問題を解決していないようです。
私がやりたいことは、リモート サーバーに AJAX 呼び出しを発行し、いくつかのパラメーターをアップロードして、いくつかのコンテンツをダウンロードすることだけです。このスクリプトはブラウザで完全に機能しますが、Phonegap 内のファイルへの小さな変更に応じて、「タイムアウト」エラーがスローされるか、単に「エラー」と表示されます。コードは次のとおりです (AJAX エンドポイントは dev エンドポイントです。試してみることができるようにそのままにしておきます)。
<html>
<head>
<script type="text/javascript" charset="utf-8" src="jquery-1.10.2.min.js"></script>
</head>
<body>
<ul>
<div id="app-status-ul">
<li>Loaded</li>
</div>
</ul>
</body>
<script>
var serverRegHit = function(data, httpStat){
$("#app-status-ul").append('<li>Server Reg OK, HTTP status: '+httpStat+'</li>');
$("#app-status-ul").append('<li>Data Status: '+JSON.stringify(data)+'</li>');
};
var serverRegFail = function(data, httpStat){
$("#app-status-ul").append('<li>Server Reg FAIL, HTTP status: '+httpStat+'</li>');
$("#app-status-ul").append('<li>Data Status: '+JSON.stringify(data)+'</li>');
};
$.ajax({url:"http://keb.bz/gcm/?deviceid=12345",
jsonp: 'callback',
dataType: 'jsonp',
timeout: 25000,
success: serverRegHit,
error: serverRegFail});
</script>
</html>
私は cordova 2.9 を使用してみましたが、2.5 にダウングレードしましたが、これも役に立たないようです。
私の config.xml は .* と keb.bz ドメインをホワイトリストに登録しており、マニフェストでアプリにインターネットへのアクセスを許可するパーミッションがあり、GCM デバイス ID を正常に取得できるため、これが機能すると思います。
JSON、JSONp、TEXT、および AJAX を介してさまざまな dataType を使用してみましたが、どれも違いはありませんでした。
Cordova/PhoneGap に不足している別の構成ポイントはありますか?
ここで何か助けていただければ幸いです。