Отправить POST из js в php

87
08 марта 2022, 11:10

Не понимаю в чём проблема. Задача такая: Нужно отправить из js данные в php и вывести их.

Код js:

function send_data(){
   var request = new XMLHttpRequest();
   var info = "123321";
   request.open("POST", "http://localhost/index.php");
   request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
   request.send('info=' + info);  
}

Код php:

$info = $_POST['info'];
echo $info;

Лог Apache:

localhost: 127.0.0.1 [22/Jan/2020:17:04:15 +0300] "POST /index.php HTTP/1.1" 
200 6 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36"

Просто ничего не происходит, вроде и отправляется всё нормально, но php ничего не выводит.

Answer 1

Решение

Чтобы вывести данные вы должны работать с ответом сервера. А если точнее то с XMLHttpRequest.responseText проверяя XMLHttpRequest.onreadystatechange; В коде ниже я добавил простой пример вывода возвращенных данных через alert();

function send_data() {
    var request = new XMLHttpRequest();
    var info = "123321";
    request.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            alert(this.responseText);
        }
    };
    request.open("POST", "http://localhost/index.php");
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    request.send('info=' + info);
}

Подробнее про response: https://developer.mozilla.org/ru/docs/Web/API/XMLHttpRequest/response

Подробнее про XMLHttpRequest с примерами: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

Ещё вариант - это использовать ajax через библиотеку jQuery. Она в отличие от XMLHttpRequest совместима с древними браузерами IE и лучше адаптирована под мелкие баги и особенности конкретных браузеров.

Подробнее: https://ruseller.com/lessons.php?id=1452&rub=32

Что вы должны понять

php код выполняется в момент обращения к нему. Вы по JS отправляете данные и на этом заканчиваете работу. Соответственно php принимает данные, обрабатывает и тоже завершает работу.

Если вы пытаетесь посмотреть результат через браузер, то когда вы открываете страницу - это новое обращение и новое выполнение скрипта, никак не связанное с вашим запросом через JS. Поэтому если вам требуется вывести данные после отправки - нужно их тут же получить.

READ ALSO
вызывать определенный массив из метода

вызывать определенный массив из метода

Есть функция валидации полей, для каждого поля свое правило в массивах, как эти массивы определить к примеру в метод rules и с него потом доставать...

108
Добавить в Viber-bot кнопки ответа

Добавить в Viber-bot кнопки ответа

Использую Viber-bot и phpКаким образом добавить кнопки ответа под постом каждого из сообщений отправленным ботом? Аналогично Telegram

125
Замена с помощью регулярных выражений

Замена с помощью регулярных выражений

Как с помощью регулярного выражения в PHP преобразовать строку вида hello @nickname (User)! в hello <a href="examplecom/nickname">User</a>!?

72
Как подготовить текст с HTML тегами для публикации на стене VK

Как подготовить текст с HTML тегами для публикации на стене VK

Использую php библиотеку для работы c api vkХочу сделать автоматическое дублирование сообщения с моего сайта на стену группы вк

120