2009-09-30 21 views
5

私たちは、XML Webサービスからデータを抽出するための広範なjQuery AJAX呼び出しを使用してiPhone Webアプリケーションを開発中です。 MacでSafariを使って開発してテストするとき、その呼び出しは美しく動作します。問題は、iPhoneエミュレータや実​​際のデバイスでテストするとすぐに、Webサービスから何も返ってこないということです。JQueryのAjaxリクエストがiPhoneのデバイスブラウザで動作しない

「開発」メニューを有効にして、「ユーザーエージェント」をモバイルSafariに変更して、違いがあるかどうかを確認しましたが、まだPC側で動作しています。

すべてのajax呼び出しなどが同じサーバーとポート番号から行われるため、クロスサイトの制限ではないと思います。

エミュレータでJavaScriptのデバッグを行って、どこでコールが失敗しているかを確認する方法はありますか?

おかげで、 デバン

答えて

4

あなたはモバイルSafariでJavaScriptコンソールを有効にすることができます。指示書hereを参照してください。これは、基本的に設定 - > Safari - >開発者 - >デバッグコンソールです。これは、エミュレータと実際のデバイスで動作します。

+0

リンクが壊れている:(先端ため – Pathros

5

同じ問題が発生しました。

jQuery.ajax関数に送信するオブジェクトのurl:パラメータを確認します。 "http://the/full/url"から "/ just/the/relative/to/root/part"に短縮してください。

私には、Safari Mobileのバグのようです。

+0

感謝を - 。私たちは実際にはJavaScriptをホスティングしているサイトとは別のサーバー/ドメインからXMLストリームを引いた私はそれがXSSのセキュリティ対策は、そのiphoneであると仮定しています – Devan

+0

これは私にとってもうまくいきました – Rob3C

+0

この回答は私の問題を解決し、何年も後にiPhone 7でSafariを実行しています。 – iep

0

私はこれを解決したと思いますが、それでも私は困惑します。

私たちのコードでonReady()セクションの直後に「ダミー」XMLHttpRequestを実行すると、それ以降のリクエストを「ブロック解除」するように見えます。

http = new XMLHttpRequest(); 

http.open("GET", "/getdata/dummy.xml); 
http.onreadystatechange=function() { 
    if(http.readyState == 4) { 
     // alert(http.responseText); 
    } 
} 
http.send(null); 

このコードブロックをコメントアウトすると、完全に有効なXMLリクエストは失敗します。もう一度、これはデバイス上にのみあり、Safariとエミュレータはこのコードブロックがなくても動作します。

PS:dummy.xmlは、単に「何も」

0

私はheadタグにスクリプトタグを移動していたために答えを返しません。

0

私はウェブサイトのAJAXチャットを書くのと同じ問題がありました。問題はキャッシュです。このコード行を追加すると、問題は解決されます。

$.ajaxSetup({ cache: false }); 
関連する問題