Estoy construyendo una aplicación para iPhone que muestra un UIWebView apuntando a una aplicación web que he creado.La interacción del usuario a veces arruina las solicitudes jQuery ajax en UIWebView
La aplicación web realiza frecuentes llamadas al servicio web para los elementos de datos que se utilizan para animar los controles en un lienzo. Las llamadas para el uso de datos jQuery ajax, pasan parámetros a través de JSON y reciben una respuesta XML.
Estoy descubriendo que, aunque se están produciendo interacciones del usuario con UIWebView, el método javascript setTimeout está bloqueado y no parece ejecutarse en absoluto. Lo suficientemente justo; hay formas de evitar esto
Pero el principal problema es que de vez en cuando, después de las interacciones del usuario (acercamiento, panoramización, etc.), las llamadas al servicio web ajax simplemente fallan todo el tiempo y no puedo establecer una razón. Incluso si se hacen repetidamente, durante los próximos minutos ninguno de ellos llegará al servicio web. Si deja completamente el UIWebView solo, nunca fallarán mientras el servicio web esté funcionando y la conectividad esté presente.
¿Alguien puede sugerir por qué, y cómo solucionarlo o solucionarlo?
Actualización rápida: de acuerdo con el depurador móvil Safari, el objeto 'respuesta' en la función de error no está definido. (Funciona si, por ejemplo, invalido el URL. Esto se puede llamar desde Object-C por [webView stringByEvaluatingJavascript: @ "lastError"], pero arroja una excepción para este error 'tocado el 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); }
});
Creo que sería una buena idea para sustituir una etiqueta iPhone relevante para una de las etiquetas que tienes ("aplicaciones web" tal vez). – Pointy
Buena idea, será suficiente. –