我有一个发送邮件的功能。这里是。正如你可以看到的那样,如果所有的检查都是正确的,它会回复“发送的电子邮件!”如果用户没有编译某些输入,则会出现错误。
if(isset($_POST['submit']))
{
$name = $_POST['name'];
$visitor_email = $_POST['email'];
... BLAHBLAH
// Validation
if(empty($name)||empty($visitor_email))
{
$errors .= "\n Field is mandatory. ";
}
if(IsInjected($visitor_email))
{
$errors .= "\n Email format is wrong!";
}
if(empty($errors))
{
// send the email
$to = $your_email;
$subject="My subject";
... BLAH BLAH
$headers = "From: $from \r\n";
mail($to, $subject, $body,$headers);
echo 'Email sent';
}
}
电子邮件发送工作正常。问题是这个表单在jQuery切换的div中。并且当需要显示消息时(该字段是必填字段或已发送电子邮件的错误消息),用户将被重定向到页面顶部和切换的div(表单所在的div) )回到可见性:隐藏。 如何在不让用户访问页面顶部的情况下打印消息?
我似乎需要使用jQuery.ajax()
,但我不知道如何......
答案 0 :(得分:0)
试试这个:
$('#form').submit(function(e){
e.preventDefault();
//ajax code that send to server side here
})
答案 1 :(得分:0)
我们需要查看您的jQuery代码。然而,话虽如此,如果您将表单提交到显示它的同一页面并且提交不是异步处理,则页面可能正在重新加载,这将使其看起来“跳转”到顶部。我会写一个Ajax方法来处理通过POST提交表单。您可以使用event.preventDefault();在提交表单时阻止页面“跳转”。
根据OP的回复进行更新:
暂时删除节目代码并隐藏联系表单。
实现jQuery验证插件:http://bassistance.de/jquery-plugins/jquery-plugin-validation作为表单处理程序:
A.将对此插件的调用绑定到提交按钮上的单击事件
B.使用event.preventDefault();停止提交表格。
C.成功时,验证插件将调用Ajax方法发布表单。
编写Ajax方法发布表单。此方法应该有两个回调:
.done() - 如果表单成功发布则执行
.fail() - 如果有错误则执行。
在你的完成方法,你可以隐藏表格。您的失败方法可能会显示错误。