JQuery Ajax call Aucun élément trouvé problème

Je reçois une erreur javascript sur firefox 3.5, en essayant d'appeler une méthode ajax.

Trouvez l'erreur ci-dessous:

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

C'est ma fonction javascript:

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

L'appel ajax attend le retour de XML ( peut-être en raison de mauvaises suppositions ) et tente de l'analyser et échoue si rien n'est renvoyé ou ce n'est pas un XML valide.

Utilisez l'option dataType pour spécifier le format de la réponse.


D'après les commentaires, certains navigateurs ne peuvent pas gérer une réponse sans contenu. Donc, une solution de rechange pour de tels cas pourrait être de renvoyer quelque chose de votre service ( même un espace unique ).

J'ai réparé le problème en configurant mimeType sur "text / html"

C'est un bug FireFox connu. https://bugzilla.mozilla.org/show_bug.cgi?id=547718 pour résoudre rapidement cela, vous pouvez peut-être retourner une réponse avec la structure html (mais pas de contenu).

J'ai rencontré une autre cause de cela – pourrait aider quelqu'un.

Si vous effectuez une demande $.ajax (dans mon cas, une requête PUT ) qui renvoie un en-tête 200, mais aucun contenu corporel que j'ai vu ce même message d'erreur d'analyse XML se produise – même si dataType est défini sur json .

(Au moins) deux solutions fonctionnent:

  • Toutes les demandes API PUT renvoient un certain contenu, ou
  • Retournez un en-tête 204 'Pas de contenu' (ce que j'ai fini de faire)

async fait également partie des options. Spécifiez également le dataType de dataType tant que xml

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

Vous devez envoyer le document html à la sortie (la sortie udates.svc dans votre cas). Si vous utilisez ASP.NET, vous pouvez faire ce qui suit:

 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();