jQuery Ajax调用没有找到元素问题

我试图调用ajax方法时在firefox 3.5上收到javascript错误。

请在下面找到错误:

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

这是我的javascript函数:

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

ajax调用期望XML返回( 可能是由于猜测错误 )并尝试解析它,如果没有返回任何内容或者它不是有效的XML则会失败。

使用dataType选项指定响应的格式。


从评论看起来有些浏览器无法处理无内容响应。 因此,针对此类情况的解决方法可能是从您的服务( 甚至单个空间 )返回一些内容。

我通过将mimeType设置为“text / html”来解决问题

我遇到了另一个原因 – 可能会帮助某人。

如果你发出一个$.ajax请求(在我的情况下是一个PUT请求),它返回一个200头但没有正文内容我已经看到同样的XML解析错误消息 – 即使dataType设置为json

(至少)两种解决方案有效:

  • 让所有API PUT请求返回一些内容,或
  • 返回一个204’无内容’标题(我最终做了什么)

async也是选项的一部分。 同时将dataType指定为xml

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

您需要将html文档发送到输出(在您的情况下输出udates.svc)。 如果使用ASP.NET,则可以执行以下操作:

 Response.Clear(); Response.Write(""); Response.Write(""); Response.Write(""); Response.Write("your output"); Response.Write(""); Response.Write(""); Response.ContentType = "text/HTML"; Response.End();