@bldeser

Почему не приходит значение переменной при Ajax запросе на страницу отправки?

Доброго дня! Прошу помочь разобраться, я делетант в этом деле, пытаюсь разобраться с самого нуля.
С помощью JS я получаю кое какие значения. И мне их нужно отправить на страницу, чтобы сторонний парсер зашел на эту страницу и смог их прочитать.
Значит сделал страницу func777.php и пытаюсь по инструкции отправить на неё значение переменной из JS, т.е. на саму себя, чтобы оно отображалось на странице. Выполняю следующий код, прямо в теле страницы:

<script type="text/javascript">

let txt = 'Hello';

$.ajax({
    url: 'func777.php',
    type: 'POST',
    data: {
    	data: txt,
    },
    success: function(data){
     $('p.out').text(data);
   },
    error: function(){
	console.log('ERROR');
    }
 })

</script>

<?php 

$arr['data'] = $_POST['data'];
echo json_encode($arr);

?>


При обновлении страницы значение txt не приходит на страницу, отображается null и код $('p.out').text(data); вставляется вместо значения текст всей сформированной страницы. Не пойму почему так, всё делаю по инструкции. Даже посмотрел в инспекторе, там отображаются данные {"data":"Hello"}

64a2a3cdb2402597984730.jpeg

64a2a3d5d7edc792562200.jpeg
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
С помощью JS я получаю кое какие значения. И мне их нужно отправить на страницу, чтобы сторонний парсер зашел на эту страницу и смог их прочитать.
Во первых, сторонний парсер скорее всего не увидит ваши значения полученные через js, так как 99% парсеров читают текст страницы, но не выполняют скрипты, а значит они увидят ровно ничего. Во вторых надо разобраться с кашей в голове и в коде. Давайте смотреть:

При обновлении страницы значение txt не приходит на страницу,
Оно не на страницу должно приходить, а в переменную data внутри скрипта.

отображается null и код $('p.out').text(data);
Нулл отображается так как вы открыли страничку методом get, соответственно переменная $_POST абсолютно пустая. Далее вы скриптом запросили страничку уже методом POST, и в ответ получили ВЕСЬ ЗАПРОШЕННЫЙ ФАЙЛ, начиная с <html> и далее весь текст страницы. Ну и в конце уже правильный ответ в json, так как сейчас метод запроса POST.
Для особо... задумчивых - в аякс колбэк в переменную data возвращается ВСЕ что вернул сервер, а не только то что вы себе нафантазировали.

Закономерный вопрос, я бы сказал классика русской философии - что делать? Во первых, разобраться как это все работает и почему все именно так как получилось. Чисто для лучшего понимания как вообще работает связка пхп-жс-аякс (ну и все подобные взаимодействия клиент-сервер). Ну и логично что если нам нужно получить только json_encode($arr);, то выводить его надо ДО вывода всей остальной страницы, и на этом сказать скрипту строгое "стопэ, дальше не надо", при этом если метод НЕ ПОСТ, то пхп скрипт вывода срабатывать вообще не должен. Как это реализовать оставляю на вашу фантазию, сообразительность и умение пользоваться гуглом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы