PHP:打印文本而无需转到页面顶部

时间:2013-10-06 23:48:31

标签: php ajax dom request

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

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(),但我不知道如何......

2 个答案:

答案 0 :(得分:0)

试试这个:

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

    //ajax code that send to server side here
})

答案 1 :(得分: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() - 如果有错误则执行。

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