2010-09-14 16 views
14

Quiero tener acceso a la API abierta a través de Ajax en aplicaciones móviles, su buen hacer en el iPhone, pero no trabaja en la aplicación PhoneGap Android:de jQuery no funciona en Android aplicación PhoneGap

returning error->"error message-null,typeerror-Result of expression 'data'[null] is not an object and error status-parsererror"

¿Hay cualquier configuración del navegador debe seguir.

Quiero llamar al servicio web de la aplicación android-PhoneGap:

$.ajax({ 
    url:'stringURL', 
    beforeSend: function(x) {  
    x.setRequestHeader('Authorization','username/pwd'); 
    }, 
    dataType:"xml", 
    contentType:'application/xml', 
    timeout:10000, 
    type:'POST', 
    success:function(data) { 
    alert(data); 
    }, 
    error:function(XMLHttpRequest,textStatus, errorThrown) {  
    alert("Error status :"+textStatus); 
    alert("Error type :"+errorThrown); 
    alert("Error message :"+XMLHttpRequest.responseXML); 
    } 
}); 
+1

¿Qué navegador y cómo se ve el código? –

+0

actualizo la publicación con la parte de codificación y como navegador considerando, en el teléfono, el navegador predeterminado es safari y en android, el navegador predeterminado es opera mini –

+2

@Mayur - Gracias por actualizar su código, como para el navegador: no debe * asumir * los valores predeterminados, o obligar a otros a ... todos los que conozco con un teléfono Android utiliza un navegador no predeterminado. –

Respuesta

2

Parece que hay un error de análisis en los datos captados. Desea que XMLHttpRequest analice datos XML, por lo que la URL recuperada debe devolver XML válido. Hay varios motivos posibles por los que funciona en uno pero falla en otra plataforma:

-Los encabezados de solicitud del navegador pueden ser diferentes, lo que da como resultado una respuesta de servidor diferente. Algunos servidores pueden dar respuestas de estado de HTTP 200 con algún mensaje de error en caso de problemas, que no analiza el XML válido.

-El XML devuelto puede ser problemático y se analiza bien en el iPhone debido a peculiaridades en el navegador allí, pero falla en otra versión/variante de WebKit que usa el Android.

-Los datos obtenidos se dañan debido a otros encabezados de solicitud, proveedor, proxy u otros efectos. Por ejemplo, algunos proxys solo manejan solicitudes HTTP/1.0, y los servidores de mal comportamiento sirven HTTP/1.1 con codificación fragmentada cada vez, por lo que el XML se dañará por los encabezados de los fragmentos.

Para la depuración, puede cambiar la solicitud a una solicitud de texto y mostrar los datos obtenidos, o incluso guardarlos en la tarjeta SD de los dispositivos, si es posible en su aplicación. Luego puede verificar que ha llegado intacto y que de hecho es XML válido.

+0

Cambié la solicitud al texto y aún la función ajax devolvió el mismo error que mencioné en la pregunta. Si lo hizo con éxito en la aplicación Android-phonegap, proporcione el javascript correcto en su respuesta. esperando tu respuesta correcta. –

+0

algo extraño ... Actualmente no tengo un proyecto de teléfono similar para verificar, lo siento. Tal vez podrías probar un objeto XMLHttpRequest ordinario como lo haría el teléfono en su interior, buscar los datos de los servidores y verificar los resultados o si también falla. – dronus

Cuestiones relacionadas