2015-05-03 4 views
1

Так что прямо сейчас у меня есть базовый contact.html с набором скриптов php, чтобы отправить мне письмо, если кто-то на моем сайте свяжется со мной. Когда они нажимают кнопку «Отправить», они переносят их на contact_sent.php, что является пустой страницей. Я хочу, чтобы, когда они нажимают на submit, они сохраняют их на одной странице, а также отображают сообщение об успешном завершении от SweetAlert, а затем очищают форму, чтобы они не могли спамить кнопку «Отправить сообщение».Отправка сообщения формы и успешности на той же странице?

<?php 
if ($_POST['submit']) { 
    $name=$_POST['name']; 
    $email=$_POST['email']; 
    $subject=$_POST['subject']; 
    $message=$_POST['msg']; 
    $to_add="***********@gmail.com"; 
    $from_add="[email protected]***********.net"; 

    $email_message="<br /><br /><b>Name:</b><br />$name <br />"; 
    $email_message.="<br /><br /><b>Reply Email:</b><br />$email <br />"; 
    $email_message.="<br /><br /><b>Regarding:</b><br />$subject <br />"; 
    $email_message.="<br /><br /><b>Message:</b><br />$message <br />"; 

    $headers="From: $from_add \r\n"; 
    $headers.="Reply-To: $from_add \r\n"; 
    $headers.="Return-Path: $from_add\r\n"; 
    $headers.="X-Mailer: PHP \r\n"; 
    $headers.="MIME-Version: 1.0\r\n"; 
    $headers.="Content-Type: text/html;\r\n"; 

    mail($to_add,$subject,$email_message,$headers); 
} 
alert("Sent!"); 
?> 

Редактировать: Предупреждение в конце не работает.

+1

предупреждение функция JS не PHP один –

+0

@Dagon Игнорируйте это. – Mystic4TW

+0

отправить форму на эту же страницу, отдельную форму из ответа. –

ответ

1

Что вы описываете, по сути, является AJAX. Если вы используете jquery, вы можете использовать функцию $ .ajax при нажатии кнопки и отправлять данные через свойство данных. На основе текущего кода PHP может выглядеть примерно так:

$.ajax({ url: '/route/to/php/function', 
     data: {name = nameVal, 
     email = emailVal, 
     subject = subjectVal, 
     message = messageVal}, 
     type: 'post', 
     success: function(output) { 
         //do whatever after the POST is successful 
        } 
}); 

Вы хотите поместить форму очищающий код и SweetAlert код в том же прослушивателя событий для кнопки отправки, либо до, либо после вызова $ .ajax ,

+0

Бах, это можно сделать без аякса. не все ответы используются ajax –

+0

Я бы предпочел сделать это без AJAX, но если это необходимо, я буду использовать его. – Mystic4TW

+0

вам не обязательно. –

2
<? 
if ($_POST['submit']) 
{ 
$name = $_POST['name']; 
$email = $_POST['email']; 
$subject = $_POST['subject']; 
$message = $_POST['msg']; 
$to_add = "***********@gmail.com"; 
$from_add = "[email protected]***********.net"; 

$email_message = "<br /><br /><b>Name:</b><br />$name <br />"; 
$email_message .= "<br /><br /><b>Reply Email:</b><br />$email <br />"; 
$email_message .= "<br /><br /><b>Regarding:</b><br />$subject <br />"; 
$email_message .= "<br /><br /><b>Message:</b><br />$message <br />"; 

$headers = "From: $from_add \r\n"; 
$headers .= "Reply-To: $from_add \r\n"; 
$headers .= "Return-Path: $from_add\r\n"; 
$headers .= "X-Mailer: PHP \r\n"; 
$headers .= "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html;\r\n"; 

mail($to_add,$subject,$email_message,$headers); 

//echo js alert 
}else{ // form not submitted yet 
//display form code 

} 

?> 
+0

Это отлично подходит для PHP-кода. :) –

3

alert - это код javascript. Для этого вам нужен ваш php-скрипт для создания javascipt. Надеюсь, что это поможет вам

<?php 
    if($_POST['submit']) { 
     //your other codes here 

     mail($to_add,$subject,$email_message,$headers); 
     //becareful keep the whole javascript code on mail function's success. 
     //I just added how to do It.It will alert too if your mail function return false. 
     ?> 
     <script type="text/javascript"> 
      alert("Sent!"); 
     </script> 
     <?php 
    } 
?> 
+1

Элегантно написано. –

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