使用AJAX,如何访问PHP发送的自定义HTTP标头响应文本?

时间:2019-04-14 14:00:51

标签: javascript php html ajax

我正在使用AJAX将指令发送到PHP脚本,从而导致各种数据库操作。在PHP脚本中,我强制使用HTTP响应代码和原因文本。这部分的PHP部分正在运行,因为当我在Chrome开发人员工具中浏览标题时可以看到代码和原因文本。但是,回到JQuery AJAX调用中,我只能访问状态代码。响应文本始终是通用的。

我尝试了在这里和其他地方找到的许多变体,但是我探索的jqXHR属性都不包含PHP脚本发送回的自定义状态响应文本。

我也尝试按照我在此处找到的帖子中的建议设置标题访问控制,即使我没有实现任何跨域操作也是如此。一次尝试没有产生任何结果。

这是AJAX调用:

 function set_logger_command(user_input)
 {

    $.ajax({
        type: "POST",
        url:  './logger_cmd_processor.php',
        data: {cmd_input:user_input},
        statusCode: 
        {
            201: function(responseObject, textStatus, jqXHR) 
            {
                // Created (201)
                // This code will be executed if a new log was successfully created
                document.getElementById("status-container").innerHTML=jqXHR.status + " | " + textStatus;
                document.getElementById("paper").innerHTML=jqXHR.responseText; 
            },

            419: function(responseObject, textStatus, errorThrown) 
            {
            // Service Unavailable (503)
            // This code will be executed if the server returns a 503 response
            alert(jqxhr.status);
            }           
        }
})

这是设置响应头的PHP:

// Sets the HTTP response status code and message
function set_http_response ($code,$message)
{
$phpSapiName    = substr(php_sapi_name(), 0, 3);
if ($phpSapiName == 'cgi' || $phpSapiName == 'fpm') {
    header('Status: '.$code.' '.$message);
} else {
    $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0';
    header($protocol.' '.$code.' '.$message);
}
}   

例如,如果在PHP中,我将响应标头设置为“状态:201表创建成功!”。我希望当AJAX调用完成后,jqXHR.status将为“ 201”(并且确实起作用),而textStatus将为“表创建成功”。

相反,textStatus仅包含“成功”

任何建议或帮助将不胜感激。谢谢

0 个答案:

没有答案