我最近为联系表单创建了自己的PHP设置,我想要发生的是在用户提交表单后,PHP文件发送一个JavaScript回显以显示警告,弹出说谢谢!,但对于某些人来说原因是,它会打开一个新窗口以及一个JavaScript警报。
这是我的PHP文件中的代码:
<?php
$firstname = $_POST['firstName'];
$lastname = $_POST['lastName'];
$email = $_POST['email'];
$tel1 = $_POST['tel1'];
$tel2 = $_POST['tel2'];
$tel3 = $_POST['tel3'];
$reason = $_POST['reason'];
$message = $_POST['text'];
$formcontent="From: $firstname $lastname \n Email address: $email \n Telephone Number: $tel1 $tel2 $tel3 \n Reason: $reason \n Message: $message";
$recipient = "ilanbiala@ilanshomekitchen.x10.mx";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "<script>alert('Thank you!');</script>";
?>
echo命令的最后一行是我插入脚本的地方,在成功提交时用弹出窗口提醒用户。如果你有一个更好的想法,那将是伟大的,但我仍然想知道我的PHP导致新窗口打开警报的原因。
我可以在this site上查看我当前的实施和问题。
您只需提交要处理的表单的表单数据,因此请务必至少在每个框中添加一些内容。
非常感谢任何帮助。
答案 0 :(得分:1)
$( function() { // $(document).ready( function() { }); this function prepares itself to be attentive to listen an event when the DOM is ready
$("#form").on("submit", function(e) { // As the form is submitted, the function is executed
e.preventDefault(); // this prevents the form to be submitted as default behaviour!
var s = $(this).serialize(); // makes a string which has all form's data in this form e.g. ?id=1&name=Heart
$.ajax({ // create an jQuery ajax call
url : 'mail.php'+s, // this will transfer data to the mail.php. In mail.php, use $_GET with all variables
cache : false, // changing browser cache
success : function(data) { // success means when the ajax completed transfer of variables and that function with data as an argument is callback variable which stores all the information echoed in php file
alert(data); // now you can manipulate that variable, i use alert function
},
error : function() { // this function checks if error occurs in the ajax transfer, if yes, then execute a certain function!
alert("Form Not Submitted"); // I have just alerted not submitted!
};
});
});
您还必须包含可以找到的{jQuery最新版本Here
答案 1 :(得分:0)
您正在向mail.php提交表单,因此mail.php将处理html请求并打印页面。您提交的页面是<script>alert('Thank you!');</script>
您似乎不想打开新页面,因此您可以对mail.php页面进行ajax调用,并且可以在表单成功提交后调用警报。
jQuery有ajax function或post function
答案 2 :(得分:0)
您的HTML 问题。
<form id="form" action="mail.php" method="post">
那是在'contact.html'上,所以当你提交表单时,它会加载'mail.php'。
您想要一个AJAX表单,或者至少在同一页面上加载表单。使用jQuery,您可以执行以下操作:
$('.submitButton').click(function(){
$.get('mail.php',$("#form").serialize(), function(data){
alert(data);
});
});
至少,您可以将mail.php代码放在联系人页面的顶部并添加一项检查以查看表单是否已提交(if($_SERVER['REQUEST_METHOD']=='POST'){}
)您需要将contact.html更新为contact.php,然后将表单重定向到'contact.php'而不是'mail.php'。然后邮件将加载到同一页面,警报将出现,内容也会出现,可能需要一些调整,但你可以正确。
答案 3 :(得分:0)
您可以使用以下代码: 在Mail.php中
$_SESSION['mail_msg']="Thank You";
header("Location: contact.php");
将contact.html保存为contact.php并添加以下代码
if(isset($_SESSION['mail_msg'])){
echo "<script type='text/javascript'>alert("{$_SESSION['mail_msg']}")</script>";
}
不要忘记在两个文件上启动会话。