2010-07-26 8 views
14

Recibo un error de JavaScript en Firefox 3.5 cuando intento llamar a un método de AJAX.llamada de jQuery Ajax No se ha encontrado ningún elemento Problema

Por favor, encontrar el error a continuación:

XML Parsing Error: no element found Location: moz-nullprincipal:{1a2c8133-f48f-4707-90f3-1a2b2f2d62e2} Line Number 1, Column 1: 

^ 

esta es mi función javascript:

function Update(Id) { 
    $.ajax({ 
     type: "GET", 
     url: ROOT_URL + "/sevice/udates.svc/Update?Id=" + Id, 
     success: function(response) { 

     }, 
     async: false 
    }); 
} 
+0

¿Sabe usted si se está llamando a su servicio? Tal vez sea un problema con el valor devuelto. Indíquenos dónde está viendo el error: en el controlador de éxito, en la llamada ajax, etc. –

+2

¿Ha buscado Firebug? Parece que está obteniendo una respuesta completamente vacía del servidor. –

+1

Creo que su pregunta va a necesitar más detalles, parece que puede haber un problema en su respuesta de su llamada de servicio. Primero devuelva exactamente el mismo documento XML cada vez (no depende de "id") y vea si eso funciona, intente restringir un poco el problema y luego edite su publicación. – walnutmon

Respuesta

14

La llamada AJAX espera XML espalda (tal vez debido a la mala adivinando) y trata de analizarlo y falla si no se devuelve nada o no es XML válido.

Utilice la opción dataType para especificar el formato o f la respuesta.


Según los comentarios, algunos navegadores no pueden responder sin contenido. Por lo tanto, una solución para estos casos podría ser devolver algo de su servicio (incluso un espacio único).

+0

así que quieres decir que necesito algo como lo que dijo Teja? – nimi

+0

@Nimesh, sí ... pero depende de lo que espera recibir del servicio ... ¿es XML? o es JSON? HTML? Texto? –

+0

JSON es el formato. Estoy usando un atributo decorado en el método de servicio WCF como WebMessageFormat.Json – nimi

0

async también es parte de las opciones. También especificar el dataType como xml

function Update(Id) { 
    $.ajax({ 
     type: "GET", 
     async: false, 
     dataType: "XML", 
     url: ROOT_URL + "/sevice/udates.svc/Update?Id=" + Id, 
     success: function(response) { 

     } 
    }); 
} 
0

Es necesario enviar el documento html en la salida (la salida udates.svc en su caso). Si usa ASP.NET, podría hacer lo siguiente:

Response.Clear(); 
Response.Write("<html xmlns=”http://www.w3.org/1999/xhtml”>"); 
Response.Write("<head><title></title></head>"); 
Response.Write("<body>"); 
Response.Write("your output"); 
Response.Write("</body>"); 
Response.Write("</html>"); 
Response.ContentType = "text/HTML"; 
Response.End(); 
4

Es un error conocido de FireFox. https://bugzilla.mozilla.org/show_bug.cgi?id=547718 para solucionarlo rápidamente, puede devolver una respuesta con estructura html (pero no hay contenido).

+2

No se ha corregido en 3 años y no parece prometedor ... – PandaWood

+0

Estoy devolviendo html y tengo mi jQuery ajax configurado para tener dataType: "html", y también recibo este error en Firefox. Un error debe haber sido introducido en algún momento porque no tuve el error antes. – mikato

19

He arreglado el problema estableciendo mimeType a "text/html"

+0

Lo mismo aquí. Agregar mimeType: 'text/html' a la llamada POST ajax solucionó el problema en IceWeasel. – Laurimann

+2

La solicitud AWS S3 PUT devuelve 200 código de estado y no ContentType, por lo que jQuery arroja este error. Agregar 'dataType: 'text'' no ayudará, pero también agregará' mimeType:' text/html'' ayudará. – Justinas

+0

El comentario de Justinas es el único que funciona para mí (Firefox) – Motoko

5

que he encontrado una causa alternativa de esto - podría ayudar a alguien.

Si usted hace una petición $.ajax (en mi caso una solicitud PUT) que devuelve una cabecera 200, pero no el contenido del cuerpo que he visto este mismo mensaje de error de análisis XML ocurrir - incluso cuando el dataType se establece en json.

(al menos) dos soluciones funcionan:

  • haz todas las API PUT solicitudes de devolución algún contenido, o
  • Volver a 'Sin contenido' de cabecera 204 en su lugar (lo que terminé haciendo)
+1

Ya estoy devolviendo un 204 para un DELETE sin cuerpo de respuesta y sigo viendo esto. :( –

+0

Pero devolviendo un espacio mientras el cuerpo funcionaba. Votación para usted :) –

Cuestiones relacionadas