2009-09-30 5 views
5

Wir entwickeln gerade eine iPhone-Web-App mit umfangreichen jQuery-AJAX-Aufrufen, um Daten aus einem XML-Webdienst zu extrahieren. Beim Entwickeln und Testen auf meinem Mac auf Safari funktionieren die Anrufe sehr gut. Problem ist, sobald wir auf dem iPhone-Emulator oder auf dem tatsächlichen Gerät testen, bekommen wir nichts zurück vom Web-Service.JQuery Ajax-Anfrage funktioniert nicht beim iPhone-Geräte-Browser

Ich habe das "Develop" -Menü eingeschaltet und den "User Agent" in Mobile Safari geändert, um zu sehen, ob das einen Unterschied macht, aber es funktioniert immer noch auf der PC-Seite der Dinge.

Ich glaube nicht, dass es eine Cross-Site-Beschränkung ist, da alle Ajax-Anrufe usw. vom selben Server und derselben Port-Nummer stammen.

Gibt es eine Möglichkeit, JavaScript-Debugging auf dem Emulator durchzuführen, um zu sehen, wo der Aufruf fehlschlägt?

Danke, Devan

Antwort

4

Sie können die JavaScript-Konsole in Mobile Safari aktivieren. Siehe die Anweisungen here. Es ist im Grunde Einstellungen-> Safari-> Entwickler-> Debug-Konsole. Dies funktioniert auf dem Emulator und dem eigentlichen Gerät.

+0

Verbindung unterbrochen ist :( – Pathros

5

Ich lief auf das gleiche Problem.

Überprüfen Sie den Parameter url: im Objekt, das Sie an die Funktion jQuery.ajax senden. Kürzen Sie es von "http://the/full/url" zu "/ just/the/relativ/zu/root/part"

Für mich scheint es wie ein Safari Mobile Bug.

+0

Danke für den Tipp -. Wir waren eigentlich den XML-Stream von einer anderen Server/Domain als die Website ziehen die JavaScript-Hosting Ich gehe davon aus, dass es sich um eine XSS Sicherheitsmaßnahme ist, dass das iPhone erlaubt keine XMLHttpRequest von einem Drittanbieter-Server – Devan

+0

Das funktionierte auch für mich – Rob3C

+0

Diese Antwort löste das Problem für mich, viele Jahre später mit Safari auf dem iPhone 7. – iep

0

Ok, ich denke wir haben das gelöst, obwohl es mich immer noch perplex lässt.

Wenn wir einen 'dummy' XMLHttpRequest direkt nach dem onReady() Abschnitt in unserem Code machen, dann scheint es, die folgenden Anfragen zu "entsperren".

Wenn ich diesen Codeblock auskommentiere, scheitern die folgenden einwandfrei gültigen XML-Anfragen. Dies geschieht wiederum nur auf dem Gerät, da Safari und der Emulator ohne diesen Codeblock funktionieren.

PS: dummy.xml gibt einfach "nichts"

0

Die Antwort für mich den Skript-Tag in den Head-Tag bewegt.

0

Ich hatte das gleiche Problem beim Schreiben eines AJAX-Chats für eine Website. Das Problem ist der Cache. Fügen Sie diese Codezeile hinzu und das Problem ist gelöst.

$.ajaxSetup({ cache: false }); 
Verwandte Themen