2017-08-19 196 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。谷歌它,有很多教程。既然你已经在使用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() 
}); 

});