2016-06-26 25 views
0

私はHTMLフォームを持ち、jQueryとPHPにリンクしています。 jQueryは、フィールドが空かどうかをチェックし、空でない場合は、データをPHPファイルに送信する必要があります。しかし、それは動作しません。あなたは、このチェックを使用しているメールを送信できません

if(!isset($_POST['submit'])) 
     { 
    //Need to submit the form. 
    exit; 
     } 
$name = $_POST['name']; 
$message = $_POST['message']; 

$email_body ="Dear sir,\n". 
"Name: $name\n". 
"Message: $message\n"; 

//Email sending to 
$email_from = '[email protected]'; 
$email_subject = "my-form"; 
$to = "[email protected]"; 
$headers = "From: $email_from \r\n"; 

//Send the email! 
mail($to,$email_subject,$email_body,$headers); 
+0

コンソールで何か?コードブロックをインデントする必要があります。 – chris85

+0

コードに間違いがあると思います。 – user3410277

+0

@ user3410277あなたのコードは問題ないようです...どうしたのですか? 'POST' AJAXコールを表示できますか? [ネットワーク]タブの使用 –

答えて

0

$(document).ready(function() { 
 
    $("#submit").click(function() { 
 
    var name = $("#name").val(); 
 
    var message = $("#message").val(); 
 

 
    $("#returnmessage").empty(); // To empty previous error/success message. 
 
    // Checking for blank fields. 
 
    if (name == '') { 
 
     alert(" Please Fill your name"); 
 
    } else if (message == '') { 
 
     alert("Please Fill message"); 
 
    } else { 
 
     $.post("xxx.php", { // To php file. 
 
     name: name, 
 
     message: message 
 
     }, function(data) { 
 
     $("#returnmessage").append(data); 
 
     if (data == "We will contact you soon.") { 
 
      $("#form")[0].reset(); // To reset form fields on success. 
 
     } 
 
     }); 
 
    } 
 
    }); 
 
});
<form name="form" method="post" action=""> 
 
    <h4>FEED-BACK FORM</h4> 
 
    <p id="returnmessage"></p> 
 
    <label>Name: </label> 
 
    <input type="text" id="name" /><br> 
 
    <label>Message: </label> 
 
    <input type="text" id="message" /><br> 
 
    <input type="button" id="submit" value="Submit"/> 
 
</form>

PHPコードです

if (!isset($_POST['submit'])) 

をそして、これは主な原因で実行したことがないだろうかあなたPOSTサーバーへのデータ、および各ブラウザのデータそれを取る。特にChromeの場合、POSTsubmitになりません。これは、主にAJAXを送信しているデータに依存するので、あなたはそれが送る何を参照する必要があります、あなたのことを確認してください

if (count($_POST) == 0) 
    exit; 

も:代わりにあなたのコード、使用の

mail()機能をSMTPで使用するように設定しているか、またはphp.iniの中でこれを使用するように設定してください。 のみあなたのコンソールをチェックすることができます、どのようなサーバーの応答。したがって、あなたのクライアントに次のような詳細を伝えてください。

if (mail($to, $email_subject, $email_body, $headers)) 
    die("Success"); 
else 
    die("Failed"); 

上記の部分は、スクリプトが間違っていた場所を診断するのに役立ちます。同時に、最初の部分で終了する前に、メッセージで応答します。代わりにあなたのコードを使用:

if (count($_POST) == 0) 
    die("Need to POST"); 

はまた、クライアント側で、あなたはjQueryの最新またはかなりまともなバージョン(バージョン> 1.9.1)を使用してください。


OPのように見えますが、バグを見つけるための詳細な説明が必要です。他の人のために役立つことができます

  1. クロームであなたのURLを開きます。 のURLをアドレスバーに入力してください。
  2. ページがロードされたら、F12ボタンを押します。これでコンソールが起動します。
  3. これがうまくいかない場合は、右クリックしを選択してを検査し、コンソールをクリックしてください。十字ボタンをクリックして最初にコンソールをクリアしてください。
  4. リロードページ。コンソールにエラーがあるかどうかを確認してください。
  5. コンソールに何が表示されているか教えてください。情報を入力したら、[ネットワーク]タブをクリックし、[送信]をクリックします。

さらなる応答を待っています。


更新:

あなたはsuccess方法でチェックされています

if (data == "We will contact you soon.") 

しかし、ここであなたがPHPファイルでそれを送信していますか?これはPHPファイルの最後に必要です。

echo "We will contact you soon."; 
+0

実際にはブラウザにも依存しません... ajaxデータにのみ依存します – charlietfl

+0

@charlietfl時々バディです。 jQueryに依存します。 –

+0

@Mr。 Praveen、それは働いていません – user3410277

0

私はあなたのコードを試しましたが、エラーにはなりません。コードを実行します。 jQueryライブラリを使用しているバージョンは?

あなたはこのよう2.2 https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js

libに

jQueryを使ってみてくださいますか?

jQuery(document).ready(function() { 
    jQuery("#submit").click(function() { 
    var data_name = jQuery("#name").val(); 
    var data_message = jQuery("#message").val(); 
    jQuery("#returnmessage").empty(); // To empty previous error/success message. 
    // Checking for blank fields. 
     if (data_name == '') { 
     alert(" Please Fill your name"); 
     } else if(data_message == '') { 
     alert("Please Fill message"); 
     } else { 
     jQuery.post("xxx.php", { // To php file. 
      name: data_name, message: data_message 
     }, function(data) { 
      jQuery("#returnmessage").append(data); 
      if (data == "We will contact you soon.") { 
      jQuery("#form")[0].reset(); // To reset form fields on success. 
      } 
     }); 
    } 
    }); 
}); 
+0

@ Berkさん、私はajaxを使っています.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.jsしかし、それは壊れていません。 – user3410277

+0

@ user3410277コードは1.11.0で私のところで動作します。継続的な警告ではありません。 サンプルをご覧ください。 https://jsfiddle.net/m6eLjajs/ –

関連する問題