メールを入力して送信する簡単なフォームがあります。フォームは 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);
どんなアイデアでも大歓迎です。ありがとう!