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

Я использую 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 просто содержит «Success»

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...