#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». Итак, чтобы упростить ситуацию, я бы хотел сохранить статус отдельно от содержимого.