フォームのサブフォームからのページリロードを防止するための多くのソリューションを読んでいますが、ほとんどが「JQueryスクリプト」またはpreventDefault()
でfalseを返します。フォーム送信時にページリフレッシュを防止すると、コードが実行されなくなる
JavascriptまたはJQueryでページをリロードしないようにすると、がに実行されないため、電子メールは送信されません。では、どうすれば両方を走らせることができますか?
私のHTMLフォームです。
<form id="myform" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
<p><input class="w3-input w3-padding-16" type="text" placeholder="name" required name="name"></p>
<p><input class="w3-input w3-padding-16" type="email" placeholder="email" required name="email"></p>
<p><input class="w3-input w3-padding-16" type="text" placeholder="subject" required name="subject"></p>
<p><input class="w3-input w3-padding-16" type="text" placeholder="comment" required name="comment"></p>
<p>
<button class="w3-button w3-light-grey w3-padding-large" type="submit">
<i class="fa fa-paper-plane"></i> SEND MESSAGE
</button>
私のPHPコードのデータを収集し、電子メールを送信する:
<?php
$name = $email = $comment = $subject = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = form($_POST["name"]);
$email = form($_POST["email"]);
$subject = form($_POST["subject"]);
$comment = form($_POST["comment"]);
$to = "[email protected]";
mail($to,$subject,$comment,$email);
}
function form($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
私はJQuery:
$(document).ready(function() {
$(document).on('submit', '#myform', function() {
return false;
});
});
あなたはAjaxを探しています。 Googleそれは、チュートリアルがたくさんあります。すでにjQueryを使用しているので、ラッパーを使用できます。 –
提出したフォームを停止した場合は提出されません。通常のフォームの送信を停止すると、フォームに通常の送信を行わせるのではなく、AJAX呼び出しを行います。あなたがやったことは、何事も起こっていないことを止めることです。AJAXに関する少しの研究を行います。 [ここから](https://www.tutorialspoint.com/ajax/)コンセプト[jQuery Ajaxのチェックアウト](http://api.jquery.com/jquery.ajax/) – RiggsFolly
ありがとう多く! – fxp869