Получить данные в файл php, возвращающий нулевое значение

Я пытаюсь проверить и узнать, как работает выборка, поэтому я хочу отправить некоторые данные из javascript в php-файл, моя проблема в том, что я не могу получить данные (в php-файле), получая только нулевой ответ.

Я использую POST, но я пробовал с GET с тем же результатом

Кстати, в консоли подключение к сети появляется только после того, как я нажму F5 , как я понимаю, работать должно уже при открытии Test.php.

datosJS.js

let datos = {
   method: "POST",
   headers: {
            "Content-type" : "application/json"
   },
   body: JSON.stringify({ 
      username:"Jonathan",
      email:"[email protected]",
      password:"123456"
  })
}

fetch('Test.php',datos)
.then(resp => resp.text())
.then(resp =>{
    console.info(resp);
})

Тест.php

<script src = "datosJS.js" type = "text/javascript"></script> //I use this to call "datosJS.js" to receive the data here in Test.php

<?php

 $body = json_decode(file_get_contents("php://input"), true);
    var_dump($body);
    
?>

Я понимаю, что PHP находится на стороне сервера, а JS на стороне клиента, и оба они работают в разное время, тем не менее у меня возникают проблемы с поиском решения этой проблемы.

Спасибо за помощь !

** Отредактировано небольшое изменение в выборке, которое теперь позволяет мне видеть данные в консоли.

response.json(): ваш PHP возвращает строку, которая не является строкой JSON (содержит HTML (<script>...), пробелы и вывод var_dump()).
Syscall 29.12.2022 18:59

Вы загружаете файл JS в Test.php? Из опубликованного кода это неясно. Если вы хотите вернуть данные из PHP, этот файл не должен содержать никакого другого вывода (без HTML и т. д.), кроме вашего ответа (который должен быть закодирован в json).

M. Eriksson 29.12.2022 19:06

Да, извините, я только что отредактировал комментарий. Я загружаю файл JS в Test.php. Идея в том, когда я открываю Test.php для получения данных из файла JS.

EnricoStckOflow 29.12.2022 19:32

Если вы запишете JS в test.php, который затем вызовет test.php для получения результата, вызвав test.php, разве это не поставит под угрозу существование всей вселенной (т.е. бесконечные циклы)?

Skip 29.12.2022 20:21

Даже если это сработает, вы не сможете использовать var_dump для получения разборчивого JSON. Он сериализован, просто используйте echo.

Skip 29.12.2022 20:23

Не волнуйтесь, Skip существование вселенной пока безопасно (насколько я видел, она запускается только один раз при загрузке страницы и все). Я внес изменения в выборку, теперь я вижу данные в консоли, но на реальной странице я все еще получаю NULL. Просто отметим, что «echo» печатает в консоли «Array», а «var_dump» показывает в консоли все содержимое массива.

EnricoStckOflow 04.01.2023 17:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
86
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ну, наконец, мне удалось получить решение этого, объяснение ниже:

datosJS.js

window.onload = function() {

let datos = {
   method: "POST",
   headers: {
            "Content-type" : "application/json"
   },
   body: JSON.stringify({ 
      username:"Jonathan",
      email:"[email protected]",
      password:"123456"
  })
}

fetch('Test.php',datos)
.then(resp => resp.text())
.then(resp =>{
console.info(resp);
        document.getElementById('results').innerHTML = resp; 

    //document.querySelector('#results').innerHTML = resp; // works as well as getElementById
    
})
}

Тест.php

<script src = "datosJS.js" type = "text/javascript"></script>

<section class = "Section" id = "results" name = "results">

            <?php

            $body = json_decode(file_get_contents("php://input"), true);
            $nombre = $body['username'];

            echo  $nombre;
            echo  '</br>';
            print_r($body);
  
            ?>

Ниже я отмечу то, чего не хватало в исходном коде:

  • В datosJS.js document.getElementById('results').innerHTML = соотв. и завернуть все в window.onload = function() {}

  • В Test.php добавьте id="results" name="results" в div, раздел или что-то еще, чтобы получить от innerHTML.

Я надеюсь, что это поможет кому-то в будущем. Ваше здоровье

Другие вопросы по теме