2012-09-10 47 views
1

响应,我发回的无法从jQuery的AJAX请求

"HUPWAIT" 

的Ajax响应这是响应样子的萤火虫。

The response in FF.

但是,当我试图抓住我的js Ajax响应,在Firefox以下两个回报的虚假和IE9:

$.ajax({ 
    url: "/wait", 
    success: function(data) { 
     console.log(data == "\"HUPWAIT\""); //returns false 
     console.log(data == "HUPWAIT"); //also returns false 
}); 

有趣的是,同样的代码在Chrome返回true:

$.ajax({ 
    url: "/wait", 
    success: function(data) { 
     console.log(data == "\"HUPWAIT\""); //returns true in Chrome 
}); 

,当我尝试使用下面的代码在Firefox调试(含萤火虫),我得到一个奇怪的反应:

$.ajax({ 
    url: "/wait", 
    success: function(data) { 
     console.log(data); //returns Document 
     console.log(''+data); //returns [object XMLDocument] 
}); 

的头看起来正常:

HTTP/1.1 200 OK 
Proxy-Connection: Keep-Alive 
Connection: Keep-Alive 
Transfer-Encoding: chunked 
Via: XXXXXXXXXX 
Date: Mon, 10 Sep 2012 23:40:34 GMT 
Server: nginx/1.2.3 

但有一些奇怪的萤火的XML标签:

XML Parsing Error: syntax error Location: moz-nullprincipal:{16915058-4ead-41ef-a63e-1265ee278d74} Line Number 1, Column 1: 
"HUPWAIT" 
^ 

有什么建议?

回答

3

Firefox/IE会尝试将AJAX(X = XML)响应解析为XML文档,从而产生您在调试器中看到的错误。将“Content-Type”标题添加到响应(text/plain)将强制浏览器正确处理文本。

+0

是的。没有意识到我忘了。谢谢! –

0

您是否尝试过在AJAX调用中指定dataType

$.ajax({ 
    url: "/wait", 
    dataType: "text", 
    success: function(data) { 
     console.log(data == "\"HUPWAIT\""); //returns false 
     console.log(data == "HUPWAIT"); //also returns false 
}); 
0

你也可以查看原始的responseText:

$.ajax({ 
    url: "/wait", 
    success: function(data, status, jqXHR) { 
    console.log(jqXHR.responseText == "\"HUPWAIT\""); 
    console.log(jqXHR.responseText == "HUPWAIT"); 
    console.log(jqXHR.responseText); 
});