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


PHP: print text without having to go to the top of the page

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

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()但我不知道怎么做..

我们需要查看您的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(( -- 如果出现错误则执行。

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

试试这个:

$('#form').submit(function(e){
    e.preventDefault();
    //ajax code that send to server side here
})