2016-07-02 2 views
1

Я создаю форму и использую PHP для обработки запроса почтовому клиенту. Теперь, когда пользователь отправляет форму, я не хочу, чтобы страница обновлялась, и я не хочу, чтобы она возвращалась полностью вверх.PHP & Form Refresh

Я хочу, чтобы оно было отправлено, а затем опубликовано сообщение, которое я поставил, в том же месте, что и форма без обновления. Возможно, AJAX?

Вот код

PHP

<?php 
error_reporting(0); 
if(isset($_POST["submit"])) { 

$name=$_POST['first_name']; 
$email=$_POST['exampleInputEmail1']; 
$description=$_POST['description']; 
$toaddress = "[email protected]"; 
$subject = "Propective User"; 

$mailcontent = "Name: ".$name."\n". 
       "Customer Email: ".$email."\n". 
       "Customer Description:\n".$description."\n"; 

$fromaddress = "From: $name"; 
$messageaftersending = "Thank you, ".$name."! \n". 
         " You've signed up for something awesome. \n"; 

mail($toaddress, $subject, $mailcontent, $fromaddress); 
$hidemydiv = "hide"; 
}?> 

HTML

<span class="thanksmessage text-faded"><?php echo $messageaftersending ?></span> 
<div class="<?php echo $hidemydiv ?>"> 
    <div class="row"> 
    <div class="formstyle"> 
    <form role="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" name="myemailform" method="post"> 

     <div class="col-lg-4 labels"> 
      <fieldset class="form-group"> 
      <label class="labels" for="firstname">First Name*</label> 
       <input type="text" name="first_name" class="form-control styled" required pattern="[a-zA-Z0-9s\-\s]+" onkeyup="" id="firstname" pattern="[a-zA-Z0-9]+"> 
      </fieldset> 
      <span class="error"><p id="name_error"></p></span> 
</div> 
+0

Ваша интуиция верна. Если вы хотите опубликовать форму и прочитать ответ с сервера, не обновляя страницу или перемещаясь, вы должны заглянуть в AJAX – BeetleJuice

+0

. Я рассмотрю это. Все еще довольно новый со всей обработкой. – ColeGauthier

ответ

1

Ajax является путь. Создайте файл PHP, который принимает почтовые Params и возвращает JSON

<?php 
/* your mail code */ 
if (all_good) { 
    echo(json_encode(array('success' => true)); 
} else { 
    echo(json_encode(array('success' => false)); 
} 
?> 

Теперь создайте XHR объект, чтобы отправить запрос на сервер и на основании ответа, показывать текст. Использование:

var data = JSON.parse(response.text) 

для анализа данных JSON, отправленных с PHP. Я бы предложил использовать jQuery.post() вместо XHR.

+0

Я не совсем уверен, как использовать JSON, но я посмотрю. – ColeGauthier