Php $ _POST возвращает пустой при использовании JavaScript для вызова функции PHP - PullRequest
0 голосов
/ 30 мая 2018

Я все еще изучаю 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.";
    }
?>

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

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

<!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>
0 голосов
/ 30 мая 2018

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

Первое - это отсутствие понимания времени запуска PHP и JS.

Второе - изменения DOM теряются призагружается новая страница.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...