2011-08-01 25 views
0

これは息切れ少し長くなるだろうと、それは次のようにjavascriptやPHPで、私はお問い合わせフォームを持っているべきである場合、私はわからないんだけどOK:jQueryの/ PHPフォームの提出

<form action="contact.php" method="POST" id='contact_form'> 
      <p><label for="name">Name</label> 
      <input type='text' name='name' id='name' /></p> 
      <div class="clear"></div> 
      <p id='name_error' class='error'>Enter your name</p> 

      <p><label for="email">Email</label> 
      <input type='text' name='email' id='email' /></p> 
      <div class="clear"></div> 
      <p id='email_error' class='error'>Enter a valid email address</p> 

      <p><label for="telephone">Telephone</label> 
      <input type='text' name='telephone' id='telephone' /></p> 
      <div class="clear"></div> 
      <p id='subject_error' class='error'>Enter your telephone number</p> 

      <p><label for="message">Details</label> 
      <textarea name='message' id='message' rows="30" cols="30"></textarea></p> 
      <div class="clear"></div> 
      <p id='message_error' class='error'>Enter your message</p> 

      <p id='mail_success' class='success'>Thank you. We will be in contact soon.</p> 
      <p id='mail_fail' class='error'>Sorry, an error has occured. Please try again later.</p> 

      <div id="button"> 
       <input type='submit' id='send_message' class="button" value='Submit' /> 
      </div> 
     </form> 

Javascriptを:

$(document).ready(function(){ 
     $('#send_message').click(function(e){ 

      //stop the form from being submitted 
      e.preventDefault(); 

      /* declare the variables, var error is the variable that we use on the end 
      to determine if there was an error or not */ 
      var error = false; 
      var name = $('#name').val(); 
      var email = $('#email').val(); 
      var telephone = $('#telephone').val(); 
      var message = $('#message').val(); 


      if(name.length == 0){ 
       var error = true; 
       $('#name_error').fadeIn(500); 
      }else{ 
       $('#name_error').fadeOut(500); 
      } 
      if(email.length == 0 || email.indexOf('@') == '-1'){ 
       var error = true; 
       $('#email_error').fadeIn(500); 
      }else{ 
       $('#email_error').fadeOut(500); 
      } 
      if(telephone.length == 0){ 
       var error = true; 
       $('#subject_error').fadeIn(500); 
      }else{ 
       $('#subject_error').fadeOut(500); 
      } 
      if(message.length == 0){ 
       var error = true; 
       $('#message_error').fadeIn(500); 
      }else{ 
       $('#message_error').fadeOut(500); 
      } 

      //now when the validation is done we check if the error variable is false (no errors) 
      if(error == false){ 
       //disable the submit button to avoid spamming 
       //and change the button text to Sending... 
       $('#send_message').attr({'disabled' : 'true', 'value' : 'Sending...' }); 

       //we submit it to contact.asp 
       $.post("contact.php", $("#contact_form").serialize(),function(result){ 
        //and after the ajax request ends we check the text returned 
        if($.trim(result) == 'sent'){ 
         $('#button').remove(); 
         $('#mail_fail').fadeOut(500); 
         $('#mail_success').fadeIn(500); 
        }else{ 
         //show the mail failed div 
         $('#mail_fail').fadeIn(500); 
         //reenable the submit button by removing attribute disabled and change the text back to Send The Message 
         $('#send_message').removeAttr('disabled').attr('value', 'Submit'); 
        } 
       }); 
      } 
     });  
    }); 

とPHP:

私は「申し訳ありませんが、エラーが発生しましたもう一度ラ試してください受ける記入
<?php 

$EmailFrom = Trim(stripslashes($_POST['email'])); 
$EmailTo = "[email protected]"; 
$Subject = "Contact Form Message"; 
$name = Trim(stripslashes($_POST['name'])); 
$email = Trim(stripslashes($_POST['email'])); 
$telephone = Trim(stripslashes($_POST['telephone'])); 
$message = Trim(stripslashes($_POST['message'])); 


$validationOK=true; 
if (Trim($name)=="") $validationOK=false; 
if (Trim($email)=="") $validationOK=false; 
if (Trim($telephone)=="") $validationOK=false; 
if (Trim($message)=="") $validationOK=false; 
if (!$validationOK) { 
    print "failed"; 
    exit; 
} 


$Body = ""; 
$Body .= "name: "; 
$Body .= $name; 
$Body .= "\n"; 
$Body .= "email: "; 
$Body .= $email; 
$Body .= "\n"; 
$Body .= "telephone: "; 
$Body .= $telephone; 
$Body .= "\n"; 
$Body .= "message: "; 
$Body .= $message; 
$Body .= "\n"; 


$success = mail($EmailTo, $Subject, $Body, "From: <$email>"); 

if ($success){ 
    print "sent"; 
} 
else{ 
    print "failed"; 
} 
?> 

。 ter "メッセージが表示されますが、どこが間違っているのかわかりません。

ご協力いただきありがとうございます。

+0

JSの結果は何ですか?それを警告してください。 failed/failed2の代わりにfailed1/failed2と書くと、実際にどこが失敗するかを指定できます。 – Damien

+0

私はそれが私にページ全体のHTMLを与える結果を警告する? – Bob

+0

あなたのJavaScriptをコメントアウトし、 'contact.php'スクリプトをデバッグしてください。想定された 'sent'以外のものがあれば、問題はPHPスクリプトにあります。 – stealthyninja

答えて

-1

PHPをサポートしているサーバにアップロードされますか?サポートされていないサーバはPHPが正しく機能しないためです。

+0

はいそれがサポートされています – Bob

+0

コメントを使って質問したり、説明を加えてください。 – RustyFluff

+0

私はどこにでもコメント機能を持っていなかったので以前はできませんでした。 –

0

あなたのページのHTMLコード全体が含まれている場合は、正しいポイントでスクリプトが停止しない、または間違ったURLにjs投稿があることを意味します(はい、私はあなたがcontact.phpを指定したことを確認しますhtaccessでルールを書き直すことは可能です)。

exit(0)を追加してください。このスクリプトの最後にあります。最後のifの下。このphpは他のphpファイルに含まれており、電子メールを送信した後に残りのサイトを表示しているようです。

0

PHPコードは何も返すことはありません。

  1. 電子メールモジュールはPHPで動作していますか?
  2. デバッグのためにメッセージ本文をエコーバックする必要があります。

それだけ構造であると背中合わせにあなた「印刷」複数のアイテム、

0

はあなたローカルホスト上で作業したりでいる問題ではないときに、異なる振る舞いを持っているように私は個人的には、印刷の使用を避けます共有ホスティングサーバー上のコードですか? (GoDaddyなどの会社)

ローカルホストにいる場合は、メールサーバーが正しく設定されていない可能性があります。あなたのコードがホストされている場合、あなたの電子メールを送信するプロバイダと電子メールアカウントが設定されていますか?あなたのアカウントパッケージはmail()関数へのアクセスを提供していますか?

PHPエラーログまたはApacheログにアクセスできる場合は、それらをチェックする必要があります。また、phpinfoページを設定して、環境の設定方法を確認する必要があります。

いずれのシナリオでも、ブラウザでPOSTリクエストを確認して、サーバーがHTTPエラーを返すかどうかを確認できます。 FirefoxをFirebugまたはChromeで開発ツールを有効にして使用します。

関連する問題