2016-03-27 13 views
0

私は自分のニーズに合わせて変更した通常のphpコンタクトフォームのサンプルを持っていました。私はその後、私のPHPメールスクリプトに投稿するためにajaxを使いたいと思っていました。何らかの理由で、私はまだ、まだ、このような私のURL内のポストの値を参照してください。アヤックスを正しく使用していないコンタクトフォーム

http://www.example.com?name=bruno&email=bruno%40gmail.com&subject=ajax+test+ff&message=test

私はまた、送信が成功したかどうかについての私のPHPからの適切な応答を得ることで失敗しています。成功すればメッセージを表示したい。

ただし、メールが送信されます。

これは私のコードです:

HTML

<form> 
    <input type="text" class="form-control" id="name" name="name" placeholder="Name"> 
    <input type="email" id="email" name="email" class="form-control" placeholder="Email"> 
    <input type="text" class="form-control" id="subject" name="subject" placeholder="Subject"> 
    <textarea class="form-control" id="message" name="message" placeholder="Message" rows="4"></textarea> 
    <button id="submit" class="form-control text-uppercase">Send</button> 
</form> 

jQueryの

$(document).ready(function() { 
    $("#submit").click(function(){ 
     var data = { 
     name:$("#name").val(), 
     email:$("#email").val(), 
     subject:$("#subject").val(), 
     message:$("#message").val(), 
     } 
      $.ajax({ 
       type: "POST", 
       url: "sendmail.php", 
       data: data, 
       dataType: 'json', 
       cache: false, 
      }) 
      .success(function(response) { 
       if(!response.errors && response.result=="success") { 
       alert("success") 
       } else 
       if(!response.errors && response.result=="oops") { 
       alert("oops somethign went wrong"); 
       } 
      }); 
    }); 
}); 

PHP

<?php 
    $inputvalues = $_POST; 
    $errors = false; 
    $result = false; 

    $email_to = "[email protected]"; 
    $email_from = "[email protected]"; 
    $name = $inputvalues["name"]; 
    $email = $inputvalues["email"]; 
    $message = $inputvalues["message"]; 
    $email_subject = $inputvalues["subject"]; 
    $headers = "From: " . $email_from . "\n"; 
    $headers .= "Reply-To: " . $email . "\n"; 
    $message = "Name: ". $name . "\r\nMessage: " . $message; 
    ini_set("sendmail_from", $email_from); 
    $sent = mail($email_to, $email_subject, $message, $headers, "-f" .$email); 
    if ($sent) { 
     $returnResult = "success"; 
    } 
    else { 
     $returnResult = "oops"; 
    } 
     echo json_encode(['result' => $returnResult, 'errors' => $errors]); 
?> 

答えて

0

あなたのリスナーに提出されてからフォームを防ぐために必要がある、すなわち

$(document).ready(function() { 
    $("#submit").click(function(event){ 
     event.preventDefault(); 
     var data = { 
     // etc. 
+0

ああ!それはアヤックスの問題を整理しました。クリスおかげさまで! –

関連する問題