Как в php формировать ответ на AJAX XMLHttpRequest запрос?
Использую XMLHttpRequest без jQuery, обращаюсь к php-скрипту, так:
getposyls.php?RV='..д
Получаю 2 не связанных проблемы.
1 проблема. Делаю в php:
$response = 'КОД';
echo response;
получаю вместо слова КОД пустой xhr.respose
2 проблема
В глобальный массив $_GET параметр RV не приходит.
Выглядит как будто не к тому скрипту обращаетесь.
В инструментах разработчика в браузере во вкладке сеть смотрели, какой код ответа у сервера, например?
Искусству задавать вопросы тоже нужно учиться, как и веб-программированию.
Вместо словесного описания кода всегда надо приводить сам код.
Плюс при любых проблемах с аяксом надо смотреть в инструментах разработчика в браузере вкладку Сеть, выбирать нужный запрос и в нем смотреть
Заголовки и запрос браузера.
Заголовки и ответ сервера.
Их тоже важно приложить к вопросу.
Антон, здравствуйте. Благодарю за участие.
Но Ваша интуиция согласуется с моей собственной. Ощущение, что стучусь не туда, куда думаю. Но причину не нахожу. Код 200 и запись в консоль XHR finished loading: GET
Но передо мной этическая проблема - некорректно занимать двух экспертов параллельно.
Я получил два отзыва на свой запрос. Вы были первый, но в другом меня научили, как надо было делать запрос.
Кажется всё учёл и вот, что я ответил моему другому помощнику .
Сказался недостаток habr-опыта. Хотел избавить экспертов от лишних потерь времени.
Содержание моей работы - динамический сайт для потомков,
Литературный с элементами квеста.
В далёком прошлом я - программист. Но за PHP и JS взялся несколько лет назад.
Стараюсь во всём разбираться сам.
Но девятый десяток - заставляет спешить, поэтому обращаюсь за помощью
(третий раз в жизни, то есть я не зануда и не приставала.)
Вот скрипт, в котором я впервые пытаюсь использовать XMLHttpRequest^
function choiceposyl(RV, nii0, answL)//Запрос серии посылов из словаря. Редакция 20.04.2024.
{'use strict'
bnf = 'fieldheader.choiceposyl. '
let s = ''
if(0) { //Ручной запрос посыла для начальной стадии отладки.
s = prompt(bnf+<?php echo __LINE__;?>+' Запрос посыла вида '+RV+' в строку '+nii0
+'\nОтвет длины '+answL+' [ Вопрос[Атрибуты[Коммент]]]') }
else{//Запрос серии посылов для выбора в формируемый расклад.
const xhr = new XMLHttpRequest();
requestURL = 'getposyls.php?RV='+"'"+RV+"'"
xhr.open('GET', requestURL);//f//xhr.open(method, url[, async[, user[, password]]]), true
xhr.responseType = "text";//ArrayBuffer, Blob, Document, JavaScript Object или DOMString
xhr.onreadystatechange = function() {//Обработчик на событие readystatechange объекта xhr
Чувствую, что дело в последоввательности операторов в JS-скрипте. Но никак не нащупаю верную.
if (xhr.readyState !== 4 || xhr.status !== 200) {
return
}//Всё в порядке, ответ получен и его статус равен 200.
}//onreadystatechange function
//requestURL произведена из getposyls.php.'async'
xhr.send(RV);
const response = xhr.response
if(1)console.log(bnf+<?php echo __LINE__;?>+'\nОтвет из getposyls.php: '+response);//xhr.
}//Запрос серии посылов
/////Выбор одного посыла s из серии сделать отдельной функцией
return s
}//choiceposyl
В консоли: fieldheader.choiceposyl. 392
Ответ из getposyls.php:
oktotvor.php?rejim=2&mkt=2&username=t_vg_vv&setr=test&ifgr=2:378 XHR finished loading: GET "families/getposyls.php?RV=%27..%D0%94%27".
В секции Network :
tposyls.php?RV=%27..%D0%94%27 200 xhr oktotvor.php?rejim=2&mkt=2&username=t_vg_vv&setr=test&ifgr=2:378 772 B 25 ms
getposyls.php?RV=%27..%D0%94%27 200 xhr oktotvor.php?rejim=2&mkt=2&username=t_vg_vv&setr=test&ifgr=2:378 773 B 88 ms
В PHP нет функции console.log.
Поэтому он падает с ошибкой и ничего не выводит.
Надо настроить отображение ошибок php, чтобы не смотреть на пустой экран.
Ну и начать с такого кода
<?php
echo json_encode($_GET);