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’无内容’标题(我最终做了什么)
这是一个已知的FireFox错误。 https://bugzilla.mozilla.org/show_bug.cgi?id=547718快速修复此问题,您可以返回带有html结构的响应(但没有内容)。
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();