2009-09-30 34 views
5

Estamos en el proceso de desarrollar una aplicación web para iPhone utilizando llamadas jquery AJAX para extraer datos de un servicio web XML. Al desarrollar y probar en mi Mac en Safari, las llamadas funcionan de maravilla. El problema es que, tan pronto como probamos en el emulador de iPhone o en el dispositivo real, no recibimos nada del servicio web.Solicitud JQuery Ajax no funciona en el navegador del dispositivo iPhone

He activado el menú 'Desarrollo' y cambiado el 'Agente de usuario' a Mobile Safari para ver si eso hace la diferencia, pero todavía funciona en el lado de la PC.

No creo que sea una restricción entre sitios, ya que todas las llamadas ajax, etc. están hechas del mismo servidor y número de puerto.

¿Hay alguna manera de que podamos realizar la depuración de JavaScript en el emulador para ver dónde falla la llamada?

Gracias, Devan

Respuesta

4

puede activar la consola de JavaScript en Safari Mobile. Vea las instrucciones here. Básicamente es Configuración-> Safari-> Desarrollador-> Consola de depuración. Esto funciona en el emulador y en el dispositivo real.

+0

enlace está roto :( – Pathros

5

Me encontré con el mismo problema.

Compruebe el parámetro url: en el objeto que envía a la función jQuery.ajax. Acórtalo de "http://the/full/url" a "/ just/the/relative/to/root/part"

Para mí, parece un error de Safari Mobile.

+0

Gracias por la punta -. En realidad estábamos sacando la secuencia XML desde un servidor diferente/dominio que el sitio que aloja el javascript Estoy asumiendo que es una medida de seguridad XSS que el iPhone no permite XMLHttpRequest desde un servidor de terceros? – Devan

+0

Esto funcionó para mí también. – Rob3C

+0

Esta respuesta me solucionó el problema, muchos años después, ejecutando Safari en iPhone 7. – iep

0

Ok, creo que hemos resuelto esto, aunque todavía me deja perplejo.

Si hacemos una XMLHttpRequest 'ficticia' directamente después de la sección onReady() en nuestro código, entonces parece 'desbloquear' cualquier solicitud siguiente.

http = new XMLHttpRequest(); 

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

Si hago un comentario sobre este bloque de código, entonces fallan las siguientes solicitudes XML perfectamente válidas. Una vez más, esto es solo en el dispositivo, ya que Safari y el emulador funcionarán sin este bloque de código en su lugar.

PS: dummy.xml simplemente devuelve "nada"

0

La respuesta para mí estaba moviendo la etiqueta de secuencia de comandos en la etiqueta de la cabeza.

0

Tuve el mismo problema al escribir un chat de AJAX para un sitio web. El problema es el caché. Agregue esta línea de código y el problema está resuelto.

$.ajaxSetup({ cache: false }); 
Cuestiones relacionadas