Используя AJAX, как получить доступ к пользовательскому тексту ответа HTTP-заголовка, отправленному PHP?

#javascript #php #html #ajax

#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 просто содержит «Успех»

Любое предложение или помощь будут оценены. Спасибо

Комментарии:

1. Почему вы хотите возиться с текстами статуса вместо отправки данных в теле ответа?

2. Потому что при успешной транзакции я верну фактические данные, которые я буду отображать пользователю в основном разделе содержимого (с именем «paper» в приведенном выше коде), а статус будет отображаться в div на боковой панели с именем «status-container». Итак, чтобы упростить ситуацию, я бы хотел сохранить статус отдельно от содержимого.