リモート サーバーに AJAX 呼び出しを発行し、いくつかのパラメーターをアップロードして、いくつかのコンテンツをダウンロードしたいと考えています。このスクリプトはブラウザでは完全に機能しますが、PhoneGap では機能しません (Ripple、Chrome でテスト中)。
次のような問題と解決策を見てきました。
PhoneGap が 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 エラー) の結果。