Php $ _POST возвращает пустое значение при использовании javascript для вызова функции php

Я все еще изучаю скрипты php и java. Я создаю простую контактную форму и устанавливаю действие формы на ту же страницу, используя $ _Server [php_self]

Я хочу, чтобы когда кто-то отправлял мою форму, он отображал сообщение, включающее имя, которое было отправлено на той же странице. замените контактную форму сообщением.

Я также попытался указать действие на другую страницу php. и это все еще не сработало. Javascript так работает? или для этого мне придется использовать другой код или другой язык.

Вот мой код

<!DOCTYPE html>
<html>
<head>
    <?php 
    include 'action.php';
?>
    <title> My profle</title>
    <meta name = "robots" content = "noindex">
    <link rel = "stylesheet" type = "text/css" href = "style.css">

</head>
<body>
<div class = "contact">
   <form class = "form" class = "contact" id = "contact-form" action = "action.php" method = "POST">
            Name: <br>
           <input type = "text" class = "field" name = "name"><br>
           Number:<br>
           <input type = "text" class = "field" name = "number"><br>
           Email:<br>
           <input type = "email" class = "field" name = "email:>"<br>
           <br>
           <input type = "submit" class = "submit" name = "submit" value = "submit"
           onclick  = "document.getElementById('contact-form').innerHTML='<?php thankyou();?>'">
       </form>
</div>
</body>
</html>

Тогда вот файл action.php

<?php
    function thankyou(){
        $name = $_POST['name'];
        echo "Thank you"." $name ! Your message has been submitted.";
    }
?>

P.S. javascript успешно возвращает функцию thankyou (), но имя $ отсутствует /

Jerick Gutierrez 30.05.2018 00:30

Таким образом можно смешивать js / php. Проблема в том, что $ _POST не был установлен до отправки формы. Во второй раз, когда вы отправляете форму, имя должно отображаться.

Phil Cross 30.05.2018 00:32

это не будет работать так, как хотите, вам нужно будет использовать js, чтобы получить имя для сообщения с благодарностью, а затем отправить форму для обработки в php

user9487972 30.05.2018 00:32

Извините, неправильно понял комментарий

Phil Cross 30.05.2018 00:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
41
2

Ответы 2

У вас тут пара разных проблем.

Во-первых, это непонимание сроков запуска PHP и JS.

Во-вторых, изменения DOM теряются при загрузке новой страницы.

Вот что происходит:

  1. Браузер запрашивает страницу
  2. PHP запускается ($_POST не имеет ключа name)
  3. Браузер получает страницу
  4. Вы нажимаете кнопку отправки
  5. Запускается JavaScript и устанавливается innerHTML (помните, что PHP вернулся на шаг 2)
  6. Форма отправляется, заставляя браузер перейти на новую страницу.
  7. PHP снова запускается
  8. Браузер получает новую страницу ... и изменения DOM, внесенные на предыдущую страницу, теряются.

Дополнительная литература: В чем разница между программированием на стороне клиента и на стороне сервера?.

+1 за информативный ответ, который по-прежнему приводит к некоторым исследованиям вместо копирования и вставки кода. Пытаюсь сделать мои ответы более похожими на это ...

TCooper 30.05.2018 00:37

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

<!DOCTYPE html>
<html>
<head>
    <title> My profle</title>
    <meta name = "robots" content = "noindex">
    <link rel = "stylesheet" type = "text/css" href = "style.css">

</head>
<body>
<div class = "contact">
   <form class = "form" class = "contact" id = "contact-form" action = "" method = "POST">
           <?php 
               if (isset($_POST)){
                   //process data however (I'm assuming) you need to - even if just posting to another script at this point...
                   echo 'Thank you '.$_POST['name'].' ! Your message has been submitted';
               }
               else{
                    echo 'Name: <br>
                    <input type = "text" class = "field" name = "name"><br>
                    Number:<br>
                    <input type = "text" class = "field" name = "number"><br>
                    Email:<br>
                    <input type = "email" class = "field" name = "email"><br>
                    <br>
                    <input type = "submit" class = "submit" name = "submit" value = "submit">';
               }
           ?>
       </form>
</div>
</body>
</html>

Спасибо, мне еще нужно изучить больше, я посмотрю, как их комбинировать и правильно рассчитать время. в любом случае, это демо, над которым я работал. resume.sofisticadoblends.com

Jerick Gutierrez 30.05.2018 01:58

np, подумал, что может помочь увидеть некоторый код, который правильно учитывает порядок языковой обработки - хотя я надеялся на дополнительный вклад сообщества - я знаю, что совместное использование php и html имеет много передовых методов, и некоторые люди не согласны с тем, что на самом деле лучшая практика.

TCooper 31.05.2018 00:49

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