Sto costruendo un'app per iPhone che visualizza una UIWebView che punta a un'applicazione Web che ho creato.L'interazione dell'utente a volte elimina le richieste jQuery ajax in UIWebView
L'applicazione Web effettua frequenti chiamate al servizio Web per gli elementi dati utilizzati per animare i controlli su un'area di disegno. Le chiamate per i dati utilizzano jQuery ajax, passando i parametri tramite JSON e ricevendo una risposta XML.
Sto scoprendo che mentre si verificano interazioni dell'utente con UIWebView, il metodo javascript setTimeout è bloccato e non sembra affatto essere eseguito. Giusto; ci sono modi per aggirare questo
Ma il problema principale è che ogni tanto dopo le interazioni dell'utente (zoom, panning, ecc.), Le chiamate al servizio web ajax falliscono sempre e non riesco a stabilire un motivo per cui. Anche se sono fatti ripetutamente, per i prossimi minuti nessuno di loro potrà nemmeno accedere al servizio web. Se si lascia completamente UIWebView, non falliranno mai fino a quando il servizio web è attivo e la connettività è presente.
Qualcuno può suggerire perché e come risolvere/aggirare questo problema?
Aggiornamento rapido: secondo il debugger mobile Safari, l'oggetto "risposta" nella funzione di errore non è definito. (Funziona se, ad esempio, faccio l'URL non valido. Questo può quindi essere chiamato da ogg-c da [webView stringByEvaluatingJavascript: @ "lastError"], ma genera un'eccezione per questo errore "toccato l'uiwebview":
$.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); }
});
penso che sarebbe una buona idea per sostituire un tag rilevante per iPhone uno dei tag che hai (forse "applicazioni web"). – Pointy
Buona idea, lo farò. –