2016-07-19 4 views
0

jQueryからPHPに値を渡そうとしています。jQueryからPHPを使用してhtmlページの値を渡して応答を返すにはどうすればいいですか?

$(document).ready(function() { 
     $("#contact_form").submit(function() { 
      var RequesterName = $("#RequesterName").val(); 
      var Requestoremail = $("#Requestoremail").val(); 
      var Subject = '[Request] Mail Subject'; 
      $.ajax({ 
       type: 'post', 
       dataType: 'json', 
       url: 'sendmail.php', 
       data: { RequesterName_val: RequesterName, Requestoremail_val: Requestoremail, Subject_val: Subject }, 
       success: function (data) { 
        alert('Mail Sent Successsfully'); 
       } 
      }); 
     }); 
    }) 

とPHP:

<?php 
    $to = $_POST['RequesterName_val']; 
    $subject = $_POST['Subject_val']; 
    $RequesterName = $_POST['RequesterName_val']; 
    $Requestoremail = $_POST['Requestoremail_val']; 

    $message = "RequesterName:".$RequesterName." , Requestoremail:".$Requestoremail." "; 

       $headers = "MIME-Version: 1.0" . "\r\n"; 
       $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 

       // More headers 
       $headers .= 'From: <'.$Requestoremail.'>' . "\r\n"; 
       $headers .= "Reply-To: '.$Requestoremail.'\r\n"; 

       if (mail($to,$subject,$message,$headers)) { 
         echo "Success"; 
       } else { 
          echo "Error"; 
       } 

     die(); 

?> 

それはメールをPHPからトリガされますが、私は戻って応答を取得していないですし、「メールが正常に送信され、」そうです。ここに私のコード、

jQueryの関数でありますjQueryに表示されていませんか?メールのトリガーの成功と失敗に対する応答をどのように得ることができますか?

+4

あなたはjquery jsonを返すことを期待して、裸の成功/エラー文字列を送信します。それはjsonの解析エラーを引き起こし、ajaxの成功ハンドラをトリガしません。 –

+0

あなたはJavaScriptの警告を受けていますか? @MarcBと合意しました –

+0

ブラウザの開発者ツールでAJAXリクエスト/レスポンスを見ましたか?エラーが報告されていますか?あなたはこれをWebサーバー上で実行していますか? –

答えて

1

あなたの$.ajaxコールでは、応答がJSONである必要がありますが、プレーンテキストを返すだけです。 jQueryがJSONの解析中にエラーを受け取ると、success:コールバックは呼び出されません。

あなたはどちらかそれはJSONを返すように、PHPを修正することができます:あなたが書くでしょうsuccess機能に続いて

echo json_encode(mail($to,$subject,$message,$headers)); 
die(); 

を:

success: function(data) { 
    if (data) { 
     alert('Mail sent successfully'); 
    } else { 
     alert('Mail not sent'); 
    } 
} 

か、dataType: 'text'を使用する$.ajaxコールを変更することができ、かつコールバックは次のようになります:

success: function(data) { 
    if (data == 'Success') { 
     alert('Mail sent successfully'); 
    } else { 
     alert('Mail not sent'); 
    } 
} 
+0

スーパーマッサージ..ありがとう – Rameez

関連する問題