我正在使用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仅包含“成功”
任何建议或帮助将不胜感激。谢谢