2016-11-23 2 views
0

Я работаю над сайтом «Скоро», где, когда пользователь выбирает «Свяжитесь с нами», модальный код JavaScript появляется в форме электронной почты. Я использовал тот же код, который у меня был на странице без модального, и он работает там, поэтому я не уверен, почему на этот раз письмо не отправляется. Это что-то делать с отправкой из модального?PHP не отправляет форму из модального

Способ, которым я сделал модальный, заключается в том, что он находится в нижней части страницы, visibility: hidden; opacity: 0;, пока пользователь не нажмет на «Свяжитесь с нами», где модаль получит класс, прикрепленный с помощью visibility: visible; opacity: 1;. Я полагаю, что есть, может быть, лучшие способы сделать это, но я учусь, и это то, что я могу сделать в данный момент.

HTML:

<form class="form" role="form" method="post" action="#contact"> 

<div class="form__text"> 
    <p>Our <strong>new</strong> website will launch in <strong>Spring 2017</strong>.</p> 
    <p>In the meantime, contact us for more information.</p> 
    </div> 
    <div class="form__inputs"> 
    <div class="form__name"> 
     <label for="name" class="name">Name</label><br> 
     <input type="text" class="form-control" id="name" name="name" value="" required=""> 
    </div> 

    <div class="form__email"> 
     <label for="email" class="email">Email</label><br> 
     <input type="email" class="form-control" id="email" name="email" value="" required=""> 
    </div> 

    <div class="form__message"> 
     <label for="message" class="message">Message</label><br> 
     <textarea class="form-control" rows="4" name="message" required=""></textarea> 
    </div> 

    <div class="form__submit"> 
     <button id="submit" name="submit" type="submit">Submit</button> 
    </div> 
    </div> 
</form> 

Это PHP:

<?php 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['message']; 
    $from = 'From: xxx'; 
    $to = '[email protected]'; 
    $subject = 'Hello'; 

    $body = "From: $name\n E-Mail: $email\n Message:\n $message"; 

    if ($_POST['submit']) { 
    if (mail ($to, $subject, $body, $from)) { 
     echo '<h4 >Thank you for your message!</h4>'; 
    } else { 
     echo '<h4>Sorry there was an error sending your message. Please try again!</h4>'; 
    } 
} 
?> 

РНР в том же документе (index.php), как HTML, в нижней части (как раз перед JS скрипт) и тег. Ошибки я получаю:

не можете/

Не могли бы вы посоветовать, почему он не отправляется? Я плохо знаю PHP, я пытаюсь понять, что происходит, но не очень успешно.

+0

В теге FORM удалите элемент 'action =" # contact "и повторите попытку? – Cagy79

+0

Кроме того, вы проверяете 'if ($ _POST ['submit'])', но ваш submit не имеет атрибута 'value', поэтому' $ _POST ['submit'] 'будет пустой строкой даже при отправке формы. Лучше проверить 'if (! Empty ($ _ POST))' –

+0

использовать вместо «#contact» в действии формы – Gopalakrishnan

ответ

0

для справок в будущем, я хотел бы, чтобы после того, что решить эту проблему:

  1. Я добавил value="Send" на кнопку отправки.
  2. Я убедился, что PHP-скрипт был сразу после тега, но до этого для всего модального раздела.
  3. Я изменил имя файла индекса с index.html на index.php.
  4. Я протестировал его прямо из моего веб-хостинга (я прописал FTP-файл). Я уверен, что должен быть способ проверить его локально, но я не знаю, как это сделать.

Спасибо всем, кто прокомментировал.

Смежные вопросы