1

クライアントにロングポーリングを停止させたい場合は、次のAJAX応答を送り返します。

"HUPWAIT"

そして、これはfirebugでの応答がどのように見えるかです。

FFでの応答。

しかし、jsでAJAX応答を取得しようとすると、FirefoxとIE9では次の両方がfalseを返します。

$.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で(firebugを使用して)デバッグしようとすると、奇妙な応答が返されます。

$.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

しかし、firebugのXMLタブには奇妙なことがあります。

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

助言がありますか?

4

3 に答える 3

3

Firefox/IE は、AJAX (X=XML) 応答を XML ドキュメントとして解析しようとし、デバッガーに表示されるエラーを生成します。"Content-Type" ヘッダーを応答 ( text/plain) に追加すると、ブラウザはテキストを正しく処理するようになります。

于 2012-09-10T23:59:46.540 に答える
1

dataTypeAJAX 呼び出しで指定してみましたか?

$.ajax({
    url: "/wait",
    dataType: "text",
    success: function(data) {
        console.log(data == "\"HUPWAIT\""); //returns false
        console.log(data == "HUPWAIT"); //also returns false
});
于 2012-09-11T00:00:55.727 に答える
0

生の responseText を確認することもできます。

$.ajax({
    url: "/wait",
    success: function(data, status, jqXHR) {
    console.log(jqXHR.responseText == "\"HUPWAIT\"");
    console.log(jqXHR.responseText == "HUPWAIT");
    console.log(jqXHR.responseText);
});
于 2012-09-11T00:20:19.907 に答える