0

完全に正常に機能するフォームを作成しました。ただし、メッセージが正常に送信されると、ユーザーは、設定した「成功」メッセージを含む新しいページにリダイレクトされます。代わりに、フォームの横にある div に成功メッセージを表示し、ユーザーが別のメッセージを送信したい場合に備えてフォームをリセットしたいと考えています。同様に、失敗時に「エラー」メッセージが同じ div に表示されることも望んでいます。これを可能にするために誰かが私の if/else ステートメントを手伝ってくれることを望んでいました。

ここに私のHTMLがあります:

<div id="contact-area">

<form id="theform" name="theform" method="post" action="feedback.php">
<input type="hidden" name='sendflag' value="send">

<p>
<label for="Name">Name:</label>
<input type="text" name="name" id="name" value="" />
</p>

<p>
<label for="Email">Email:</label>
<input type="text" name="email" id="email" value="" />
</p>

<p>
<label for="Message">Message:</label><br />
<textarea name="message" rows="20" cols="20" id="message"></textarea>
</p>

<p>
<input type="submit" name="submit" value="Submit" class="submit-button" />
</p>

</form>     
</div>

<div class="message">
<p class="submitMessage"></p>
</div>

これが私のPHPです:

<?php

$mail_to_send_to = "myemail@gmail.com";
$your_feedbackmail = "noreply@domain.com";

$sendflag = $_REQUEST['sendflag'];
if ( $sendflag == "send" )
{
$name = $_REQUEST['name'] ;
$email = $_REQUEST['email'] ;
$message = $_REQUEST['message'] ;
$headers = "From: $name" . "\r\n" . "Reply-To: $email" . "\r\n" ;
$a = mail( $mail_to_send_to, "Feedback form", $message, $headers );
if ($a)
{
print("Message was sent, you can send another one");
} else {
print("Message wasn't sent, please check that you have changed emails in the bottom");
}
}

?>
4

2 に答える 2

0

私があなたの質問を正しく理解していれば、ページを離れることはなく、divフォームの送信が成功したことに基づいて表示または非表示になることを期待しています. その場合、AJAX を使用する必要があるようです。幸いなことに、jQuery にはこれが組み込まれています。次のようなものをお勧めします。

$.post("url.php", { option1: value1, option2: value2 }, function(data) {
    if(data != '')
        $('#theDiv').html("Success!");
});

詳細については、こちらのドキュメントを参照してください

于 2012-12-20T06:10:19.617 に答える
0

ここで例を読んで従います: jQuery AJAX

あなたは基本的にこのようなことをします。

$.ajax({
  url: /url/to/your/php,
  data: dataObjectPosting
  success: function(data){
    //the data object will have your PHP response;
    $('#divid').text('success message');
  },
  error: function(){
    alert('failure');
  }
});

成功とは単に HTTP 200 を意味するだけであり、PHP コードが正常に実行されたとは限らないことに注意してください。

于 2012-12-20T06:12:11.190 に答える