ローカル Apache インスタンス ( /test
) のページで呼び出される関数があり、サブページ ( /test/info
)を呼び出してjQuery.ajax
正しく AJAX 呼び出しを行い、FF、Safari、Chrome でデスクトップの応答からコンテンツを動的にロードしますが、 iOS エミュレーター。呼び出しは行われず、ページが更新されます。
window.getInfo = function ( event ) {
console.log('1) prior to $.ajax');
$.ajax({
url: 'http://localhost/test/info',
dataType: 'html',
beforeSend: function(xhr) {
console.log('2) beforeSend');
},
success: function(data, textStatus) {
console.log('3) success');
if ( textStatus == 'success' ) {
// doing stuff with data
}
}
}).always( function() { console.log('4) always'); });
};
デスクトップ ブラウザからはすべてのログが出力され、私の Apache サーバーは でリクエストを報告しますが/test
、iOS エミュレータの Safari では、'1) prior to $.ajax'
と'2) beforeSend'
ログのみが出力され、Apache に対して行われる次のリクエストは/test
.
ここで何が起こっているのか、iOS 自体を動作させる方法を知っている人はいますか?
更新:async: false
属性をajax呼び出しに追加すると、すべてのログが出力され、リクエストが行われるため、基本的に問題が修正されました。ただし、ページは引き続きリロードされます。これは、iOS でのイベントの伝播に関連する別の問題であると考えられます。