2016-07-02 2 views
1

양식을 작성하고 PHP를 사용하여 메일 클라이언트에 요청을 처리합니다. 이제 사용자가 양식을 제출하면 페이지를 새로 고치지 않아도되고 맨 위로 맨 위로 돌아가고 싶지 않습니다.PHP 및 양식 새로 고침

양식을 제출하지 않고 양식과 동일한 장소에있는 메시지를 제출하고 게시하고 싶습니다. 아마 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

입니다. 이제 응답에 서버에 요청 기반을 보낼 수있는 XHR 객체를 생성

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

JSON

을 포스트 PARAMS을 받아 반환하는 PHP 파일을 만듭니다 , 텍스트를 보여줍니다. 사용 :

var data = JSON.parse(response.text) 

PHP에서 보낸 JSON 데이터를 구문 분석합니다. XHR 대신 jQuery.post()를 사용하는 것이 좋습니다.

+0

JSON을 사용하는 방법에 대해서는 잘 모르겠지만 한 번 살펴 보겠습니다. – ColeGauthier