当用户单击"联系人表单"上的"提交"按钮时,成功或错误消息不会显示在"联系人表单的底部";相反,消息以纯格式显示在新的空白页上,然后终止;用户没有返回到联系人表单。我有联系人表单的这三个文件:contactus.html, style.css
和emailform.php
。
emailform php(这个php驻留在主机服务器上(包含用于捕获错误的if ($_POST['submit']) {
代码。Contactus.html
包含
<form method="post" action="http://www.xxxxxx.com/emailform.php" name="Form" id="Form">
。
有人能帮我解决这个问题吗?提前谢谢。
从您的emailform.php重定向回contactus.html。如果您希望能够对表单做出反应,请将contactus设置为php文件(如果您的Web服务器未配置为在html文件中使用php(。
当您从emailform.php重定向时,您可以通过url向contactus发送get参数。With header('Location: ' . $_SERVER['HTTP_REFERER'] . '?success=true');
在contactus.php中,您可以检查是否有参数等。
if(isset($_GET['success'])){
if($_GET['success'] === 'true'){
echo 'it worked fine';
else{
echo 'something did not work';
}
}
如果在提交表单后要将用户发送回上一页,则emailform.php
文件应包含:
header('Location: ' . $_SERVER['HTTP_REFERER']);
如果你想在contactus.html
上显示错误消息,你可以在url中添加一个参数,比如contactus.html?error=1
,在那里你可以捕捉错误并在同一页面中显示给用户。
或者,contactus.html
文件可以对emailform.php
进行AJAX请求,并在同一页面中显示结果,这样浏览器就不需要重定向到emailform.php
。
如果你已经包含了jQuery,并且想通过AJAX进行POST,请尝试从表单中删除action=...
,让你的头部包含jQuery,并在身体内的任何位置通过它:
<script type="text/javascript">
$("#submit").on("click",function(){
var email = $("#email").val();
var name = $("#name").val();
var message = $("#message").val();
$.ajax({
type: "POST",
url: "/emailform.php",
data: { email : email, name : name, message: message }
}).done(function(msg) {
//update your message div here
$("#message").test(msg);
alert(msg);
});
});
</script>