jquery如何获取post类型的ajax调用返回的状态消息?

时间:2011-12-07 21:36:23

标签: javascript jquery ajax apache http

的javascript

    $('#send').on('click', function() {
        $.ajax({
            'url': $('#url').val(),
            'type': 'post',
            'complete': function (jqXHR, textStatus) {
                var msg = "Status: " + jqXHR.status + " (" + jqXHR.statusText + " - " + textStatus + ")<br />";
                msg += jqXHR.getAllResponseHeaders().replace(/\n/g, "<br />");

                $('#results').html(msg);
            }
        });
    });

PHP

    header("HTTP/1.0 200 Some message here");
    flush();
    exit();

结果

Status: 200 (OK - success)
Date: Wed, 07 Dec 2011 21:57:50 GMT 
X-Powered-By: PHP/5.3.6 
Transfer-Encoding: chunked 
Connection: Keep-Alive 
Server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8r DAV/2 PHP/5.3.6 
Content-Type: text/html 
Keep-Alive: timeout=5, max=100 

问题

如何在标题中获得“此处的某些消息”部分?

HTTP

http protocol

  

6.1状态行

     

响应消息的第一行是状态行,由...组成   协议版本后跟一个数字状态代码及其   相关的文本短语,每个元素由SP分隔   字符。除最终的CRLF序列外,不允许使用CR或LF。

   Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

2 个答案:

答案 0 :(得分:3)

知道了。它是jqXHR.statusText

$.get("test.php").complete(function(jqXHR) {
    console.log(jqXHR.statusText);
});

只需使用您确切的PHP代码在Chrome中试用它。

答案 1 :(得分:-2)

你有没有试过xhrobject.getResponseHeader()jQuery docs说它也可以在那里使用。如果您不知道标题的名称,请尝试getAllResponseHeaders()

此外,您是否可以在浏览器的调试控制台(网络选项卡,连接标头)中看到该消息?如果不存在,那将很难从js获得。