1

ページが読み込まれるとフォームが非表示になり、[メールを送信]をクリックするとフォームが表示されます。ユーザーが[メールを送信]ボタンをクリックすると、jqueryを使用してフォームが下にスライドするようにできました。 。しかし、現在の課題は、[メールを送信]ボタンをクリックするとページが再読み込みされ、jqueryが再度実行され、フォームが再び非表示になることです。送信する前に、フィールドに値が含まれているかどうかを確認しましたが。ただし、フォームの[メールの送信]ボタンをクリックした後、フィールドに値が含まれているかどうかに関係なく、ページが再読み込みされ、フォームが再び非表示になります。この問題を解決するために私に何ができるか誰か教えてもらえますか?期待してくれてありがとう。

以下は私のphpとjqueryのコードです:

<script type="text/javascript">
$(function(){
    $("#contact_Holder").hide();
    slideDown();
});

function slideDown(){
    $("#slideDown").click(function() {
        $("#contact_Holder").slideDown("normal");
    });
    $("#sendmail").click(function() {
        $("#contact_Holder").show();
    });
}

<?php 
if(isset($_POST['sendmail']))
{
if(!(isset($_POST['txtname']) || ($_POST['txtsubject']) || ($_POST['txtmessage'])) || empty($_POST['txtname']) || empty($_POST['txtsubject']) || empty($_POST['txtmessage']))
    {
echo '<font color="#090" size="3" face="Palatino Linotype,serif">'."please fill all fields thank you!".'</font>';
    }
else
{
$to = 'info@mail.com';
$subject = $_POST['txtsubject'].' '.$_POST['txtname'];
                $body = $_POST['txtmessage'];

                if(mail($to,$subject,$body))
                {
                    echo('<font color="#090" size="3" face="Palatino Linotype,serif">'."Your message has been sent successfully".'</font>');
                }
                else{ echo('<font color="#090" size="3" face="Palatino Linotype,serif">'."Message Delivery Failed!".'</font>'); }
            }
        }
    ?>
4

2 に答える 2

2

つまり、次のことを行う必要があります。

  1. onClick送信ボタンにjQuery を添付します。
  2. クリック関数の先頭で呼び出しe.preventDefault()ます (これにより、デフォルトのボタンの動作が停止します)。
  3. jQuery Ajax を使用してフォームを送信する

これで、問題を分類するために必要な手順がカバーされるはずです。

于 2013-02-25T08:43:46.573 に答える
0

メールの送信をクリックしたときに、ajaxを介してデータを投稿しなかったと思います。そのため、フォームの送信によりページがリロードされます。ajax を介してデータを送信し、メソッドを呼び出す必要があります

preventDefault()

ページのリロードを避けるために ajax send メソッド内で。

于 2013-02-25T08:46:08.523 に答える