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:
PUT
renvoient un certain contenu, ou 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();