-2

我最近为联系表单制作了自己的 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 导致一个带有警报打开的新窗口的原因。

可以在此站点上查看当前的实施和我遇到的问题。

您只需提交表单数据即可处理表单,因此请确保至少在每个框中放置一些真实的东西。

任何帮助深表感谢。

4

4 回答 4

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 最新版本

于 2013-01-06T07:26:10.820 回答
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>";
}

不要忘记在两个文件上启动会话。

于 2013-01-06T08:16:06.520 回答
0

您正在向 mail.php 提交表单,因此 mail.php 将处理 html 请求并打印页面。您提交的页面是<script>alert('Thank you!');</script>

似乎您不想打开新页面,因此您可以对 mail.php 页面进行 ajax 调用,并且一旦表单提交成功就可以调用警报。

jQuery有ajax函数或者post函数

于 2013-01-06T07:08:52.127 回答
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”。然后邮件将加载到同一页面上,警报会出现,内容也会出现,可能需要一些调整,但你可以做对。

祝你好运。

于 2013-01-06T07:10:41.183 回答