0

メールを入力して送信する簡単なフォームがあります。フォームは jquery を介して php スクリプトに送信されます。php スクリプトは電子メールを送信し (電子メールが有効な場合)、JSON 応答を返し、jquery は応答に基づいて div に成功または失敗のメッセージを表示します。すべてが機能しました。

私がやりたいことは、フォームが送信の成功として検証された場合にフォームをクリアすることです。フォーム フィールドをクリアし、成功/失敗メッセージを問題なく表示できますが、1 つのバグが見つかりました。誰かがフォームに別の電子メールを入力すると、成功 (または失敗) メッセージは表示されません。ただし、php はまだデータを正しく実行しています (電子メールを送信しています)。成功/失敗メッセージのみが欠落しています。成功/失敗メッセージは、フォームを初めて送信したときに機能しますが、リセット後は機能しません。フォームは次のとおりです。

<form action="" id="emailsend" method="post" >
Email: <input type="text" name="email" /><br />
<input type="submit" name="submit" value="Submit" ; />
</form>

成功/失敗メッセージが表示される Div:

<div id="formResponse"></div> 

jquery

$(document).ready(function(){  

$("#emailsend").submit(function(){  

    $.ajax({  
        type: "POST",  
        url: "sendunit4.php",  
        data: $("#emailsend").serialize(),  
        dataType: "json",  

        success: function(msg){  
            $("#formResponse").removeClass('error');  
            $("#formResponse").removeClass('success');  
            $("#formResponse").addClass(msg.status);  
            $("#formResponse").html(msg.message);
            $('#formResponse').fadeOut(2000);
            $('#emailsend')[0].reset();



        },  
        error: function(){  
            $("#formResponse").removeClass('success');  
            $("#formResponse").addClass('error');  
            $("#formResponse").html("There was an error submitting the form. Please try again.");  
        }  
    });  

    return false;  

});  

});  

PHP スクリプトの関連部分 (sendunit4.php):

$to = $_POST['email'];
if ($recipients = $swift->send($message, $failures))
{
$response_array['status'] = 'success';  
$response_array['message'] = 'Email sent!';
}
else{
$response_array['status'] = 'error';  
$response_array['message'] = 'There was a problem sending';  
}
echo json_encode($response_array); 

どんなアイデアでも大歓迎です。ありがとう!

4

0 に答える 0