Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:打印文本而不必转到页面顶部_Php_Ajax_Dom_Request - Fatal编程技术网

PHP:打印文本而不必转到页面顶部

PHP:打印文本而不必转到页面顶部,php,ajax,dom,request,Php,Ajax,Dom,Request,我有一个发送邮件的功能。给你。正如您在最后看到的,如果所有检查都得到纠正,它会回显“已发送电子邮件!”,如果用户未编译某些输入,则会出现错误 if(isset($_POST['submit'])) { $name = $_POST['name']; $visitor_email = $_POST['email']; ... BLAHBLAH // Validation if(empty($name)||empty($visitor_email))

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

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)将返回到可见性:hidden。 如何在不让用户转到页面顶部的情况下打印消息

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

试试这个:

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

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

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

根据OP的回复更新:

  • 暂时删除显示和隐藏联系人表单的代码

  • 实现jQuery验证插件:作为表单处理程序:
    A.将对此插件的调用绑定到submit按钮上的click事件。
    B.使用event.preventDefault();阻止表单提交。
    C.成功后,验证插件将调用Ajax方法发布表单

  • 编写一个Ajax方法来发布表单。此方法应该有两个回调:
    .done()--在表单成功发布时执行
    。fail()--在出现错误时执行。

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


  • 谢谢你的回复!jQuery代码很简单:你能帮我用ajax函数重写按钮吗?我对JS不是很熟悉。我只是根据你的回答更新了我的答案。你可能需要做一些研究和练习一些jQuery教程,但这应该会给你一个坚实的游戏计划。谢谢你的回复!但是,对不起。。我不是专家。。“发送到服务器端的ajax代码”是什么意思?我有一个包含许多
    输入
    (和相对
    值=“
    ”)的表单。然后我有$SOMETHING=$\u POST['SOMETHING'];还有一个函数,将它们放在电子邮件正文中,并调用PHP电子邮件函数。