2017-08-19 9 views
0

フォームのサブフォームからのページリロードを防止するための多くのソリューションを読んでいますが、ほとんどが「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; 
    }); 
}); 
+0

あなたはAjaxを探しています。 Googleそれは、チュートリアルがたくさんあります。すでにjQueryを使用しているので、ラッパーを使用できます。 –

+0

提出したフォームを停止した場合は提出されません。通常のフォームの送信を停止すると、フォームに通常の送信を行わせるのではなく、AJAX呼び出しを行います。あなたがやったことは、何事も起こっていないことを止めることです。AJAXに関する少しの研究を行います。 [ここから](https://www.tutorialspoint.com/ajax/)コンセプト[jQuery Ajaxのチェックアウト](http://api.jquery.com/jquery.ajax/) – RiggsFolly

+0

ありがとう多く! – fxp869

答えて

0

をページロードせずに、このための$アヤックスの方法を使用してください:

$("#btn").click(function() 
{ 
$.ajax({ 
type : 'POST', 
url : 'url', 
data : $('#form').serialize() 
}); 

});

0

私はここに http://remotephpdevelopers.com/blog/prevent-form-submission/

からこれを得たが、あなたが探している何かのように思えます。イベントを通過させるだけです。これが欲しいと思っています

$(“#submitButton”).click(function(event){ 
event.preventDefault(); 
//do your thing 
}); 
関連する問題