Ajax表单不会显示成功消息

时间:2014-03-19 19:34:52

标签: php jquery ajax post

我遇到联系表单的问题一切正常,除非在将表单添加到数据库后它不会显示成功消息。

流程脚本

$post = (!empty($_POST)) ? true : false;

if($post)
{
    include 'db.php';
    include 'functions.php';

    $name = stripslashes($_POST['name']);
    $email = trim($_POST['email']);
    $phone = stripslashes($_POST['phone']);
    $device = stripslashes($_POST['device']);
    $model = stripslashes($_POST['model']);
    $subject = stripslashes($_POST['subject']);
    $message = stripslashes($_POST['message']);

    $error = '';

    // Check name

    if(!$name)
    {
        $error .= 'Please enter your name.<br />';
    }

    // Check email

    if(!$email)
    {
        $error .= 'Please enter an e-mail address.<br />';
    }

    if($email && !ValidateEmail($email))
    {
        $error .= 'Please enter a valid e-mail address.<br />';
    }

    // Check phone number

    if(!$phone)
    {
        $error .= 'Please enter your phone number.<br />';
    }

    // Check device 

    if(!$device)
    {
        $error .= 'Please enter your device manufacturer.<br />';
    }

    // Check device model 

    if(!$model)
    {
        $error .= 'Please enter your device model.<br />';
    }

    // Check message (length)

    if(!$message || strlen($message) < 15)
    {
        $error .= "Please enter your message. It should have at least 15 characters.<br />";
    }

    // Get current time stampe
    $date = time();


    if(!$error)
    {

        $addDB = "INSERT INTO contactus (`name`,`email`,`phone`,`device`,`model`,`subject`,`message`, `date`, `read`) VALUES ('$name','$email','$phone','$device','$model','$subject','$message','$date', '')";
        $result = mysqli_query($con,$addDB) or trigger_error("Query Failed! SQL: $sql - Error: ".mysqli_error(), E_USER_ERROR);

        echo 'OK';

    } else {

        echo '<div class="notification_error">'.$error.'</div>';

    }

}

这是jQuery部分

<script type="text/javascript">                                 
$(document).ready(function ()
{ // after loading the DOM
    $("#ajax-contacts").submit(function ()
    {
        // this points to our form
        var str = $(this).serialize(); // Serialize the data for the POST-request
        $.ajax(
        {
            type: "POST",
            url: 'includes/contact-process.php',
            data: str,
            success: function (msg)
            {
                $("#note").ajaxComplete(function (event, request, settings)
                {
                    if (msg == 'OK')
                    {
                        result = '<div class="notification_ok">Your message has been sent. Thank you!</div>';
                        $("#fields").hide();
                    }
                    else
                    {
                        result = msg;
                    }
                    $(this).html(result);
                });
            }
        });
        return false;
    });
});
</script>  

感谢任何帮助,我很高兴。

1 个答案:

答案 0 :(得分:1)

放弃这一行:

$("#note").ajaxComplete(function (event, request, settings)

您不需要它,因为您已经在success:功能中。 出于调试目的,您可以尝试在该麻烦线上方放置一个alert("Test");来检查它是否显示。

请注意,success回调已被弃用,您应该使用.done。有关详细信息,请参阅jQuery API

jQuery API info

您也可以尝试自己做一些调试。例如。 Chrome有一些非常好的开发人员工具,你可以看到很多东西,你甚至可以设置断点并逐步完成代码。很有用。

  • 点击F12以显示开发人员工具。

  • 进入Settings

DevTools

  • 启用XHR / Ajax请求的记录:

DevTools

  • 以后执行Ajax请求时,它将记录在console

DevTools

只需右键单击该Ajax请求即可触发新的相同请求。通过这种方式,您可以准确地看到浏览器发送的内容以及PHP脚本接收的内容。当然,请求需要GET来调试传递的变量。