0

我有一个发送邮件的功能。这里是。正如您在最后看到的那样,如果所有检查都正确,它会回显“已发送电子邮件!” 如果用户不编译某些输入,则会出现错误。

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(表单所在的那个) ) 回到可见性:隐藏。如何在不让用户转到页面顶部的情况下打印消息?

看来我需要使用jQuery.ajax(),但我不知道如何..

4

2 回答 2

0

尝试这个:

$('#form').submit(function(e){
    e.preventDefault();

    //ajax code that send to server side here
})
于 2013-10-06T23:52:51.620 回答
0

我们需要查看您的 jQuery 代码。但是,话虽如此,如果您将表单提交到显示它的同一页面并且提交未异步处理,则页面可能会重新加载,这将导致它看起来“跳”到顶部。我会编写一个 Ajax 方法来处理通过 POST 提交的表单。您可以使用 event.preventDefault(); 防止表单提交时页面“跳转”。

根据OP的回复更新:

  1. 暂时删除显示并隐藏联系表单的代码。

  2. 实现 jQuery 验证插件:http ://bassistance.de/jquery-plugins/jquery-plugin-validation作为表单处理程序:
    A. 将此插件的调用绑定到提交按钮上的单击事件。
    B. 使用 event.preventDefault(); 阻止表单提交。
    C. 成功后,验证插件将调用 Ajax 方法来发布您的表单。

  3. 编写一个 Ajax 方法来发布您的表单。此方法应该有两个回调:
    .done() - 如果表单发布成功
    则执行 .fail() - 如果有错误则执行。

    在您完成的方法中,您可以隐藏表单。您的失败方法可能会显示错误。

于 2013-10-06T23:55:14.940 回答