Ich baue eine iPhone App, die eine UIWebView zeigt, die auf eine Webanwendung zeigt, die ich erstellt habe.Benutzerinteraktion schraubt manchmal jQuery Ajax Anfragen in UIWebView
Die Web-Anwendung macht häufige Webservice-Aufrufe für Datenelemente, die Steuerelemente auf einer Leinwand animieren werden verwendet, um. Die Aufrufe für Daten verwenden jQuery ajax, übergeben Parameter über JSON und empfangen eine XML-Antwort.
Ich finde, dass, während Benutzer-Interaktionen mit dem UIWebView auftreten, die Javascript-Methode setTimeout blockiert ist und scheint nicht überhaupt auszuführen. Meinetwegen; Es gibt Möglichkeiten, dies zu umgehen.
Aber das Hauptproblem ist, dass hin und wieder nach Benutzerinteraktionen (Zoomen, Schwenken usw.), die Ajax-Web-Service-Anrufe werden immer die ganze Zeit fehlschlagen und ich kann keinen Grund, warum. Auch wenn sie wiederholt gemacht werden, kommt in den nächsten Minuten keiner von ihnen überhaupt zum Webservice durch. Wenn Sie das UIWebView vollständig verlassen, werden sie niemals fehlschlagen, solange der Web-Service aktiv ist und die Verbindung besteht.
Kann jemand vorschlagen, warum, und wie man das umgeht/arbeitet?
Quick Update: nach dem Safari mobilen Debugger, das ‚Antwort‘ Objekt in der Fehlerfunktion ist nicht definiert. (Es funktioniert, wenn ich zum Beispiel die URL ungültig machen Dies kann dann von Objective-C durch genannt werden. [WebView stringByEvaluatingJavascript: @ „lasterror“], sondern löst eine Ausnahme für diese ‚berührte die UIWebView‘ Fehler):
$.ajax({
type: "POST",
url: "WebService.asmx/GetValues",
async: true,
data: "{'pageVersionIndex': " + PageVersionIndex + " , 'timeStreamIndex': '" + TimeStream + "'}",
contentType: "application/json; charset=utf-8",
dataType: "xml",
success: function (response) { UpdateControls(response); },
error: function (response, status, errorthrown) {
calling = false;
lastError = response.statusText; //Throws exception
connectionInterrupted = true;
DataRoutine = window.setTimeout(DataService, dataFrequency); }
});
Ich denke, es wäre eine gute Idee sein, einen entsprechenden iPhone-Tag zu ersetzen, für eines der Tags, die du hast ("Web-Anwendungen" vielleicht). – Pointy
Gute Idee, wird es tun. –