PHP验证而无需刷新

时间:2018-06-23 20:53:36

标签: javascript php mysqli phpmyadmin page-refresh

我是最初的程序员。我学习PHP已有很短的时间,目前我正在为喜欢读书的人编写社交媒体应用程序。几天以来,用户注册是一个问题,将表单放在“模式”中并使用JS添加到那里,问题是发送表单后页面会刷新,因此我想问一下是否有可能它将返回验证结果而不刷新的代码脚本,并且在将数据正确发送到数据库之后,出现了有关注册的信息。

这是所有文件代码的链接:https://hastebin.com/pudisakowi.xml

抱歉,这是一个愚蠢的问题,但我无法理解如何解决这个问题。

我尝试过这样的代码

$(document).ready(function() {
const regiterUrl = "link to the register_page.php";

$("#registerForm").on("submit", function(event) {
    event.preventDefault();
    const formData = $(this).serialize();
    $("#login-text").fadeIn();
    $("#div-form").hide();
    $("#btn-register").attr("disabled", true);
    $.ajax({
        type: "post",
        url: regiterUrl,
        data: $("#registerForm").serialize(),
        success: function(response) {
            setTimeout(() => {
                console.log(response);
                $('#exampleModalCenter').modal('hide')
            }, 2000);
        },
        error: function(response) {
            alert("WYSTĄPIŁ BŁĄD");
        }
    });
});

}); 但它总是成功,什么也不会保存到数据库。

我将感谢您做事的方向,或指出当前代码中的错误。

2 个答案:

答案 0 :(得分:0)

我快速浏览了一下,我认为令人耳目一新的问题是因为type =“ submit”

<button class="btn btn-info" type="submit" name="register">Zarejestruj</button>

您可以这样做:

<button class="btn btn-info register_btn"  name="register">Zarejestruj</button>

比:

$(".register_btn").on("click", function(event)... 

此外,您不需要为所有内容添加表单标签,因此可以删除表单标签行,如果要将数据传递给ajax,最好像这样写 数据:{param1:value,param2:value} 而是整个注册制定者...

我没有测试过,但是希望它能对您有所帮助。

欢呼

答案 1 :(得分:0)

如果发出请求时发生任何错误,则会调用JQuery AJAX错误回调。一旦从服务器收到合法响应,就会触发成功回调。

在这种情况下,您应该重写服务器端脚本以支持AJAX调用。并且您将不得不稍微更改客户端代码。请参考下面的代码示例。

  • 服务器端代码

if (isset($_POST)) {
    $response['success'] = false;

    //Set content type here, So the browser will be able to parse your response properly.
    header('Content-Type: application/json');

    //Data validation
    if ($any_error) {

        $response['errors'][] = 'Error Message';

    } elseif ($another_error ) {

        $response['errors'][] = 'Another Error Message';

    } else {

        //Your Form processing code
        //You may create a flag($form_processing) to verify success/failure
        if ($form_processing ) {
            $response['success'] = true;
        }
    }

    echo json_encode($response);
    exit;
}
  • 客户端代码

    $(document).ready(function () {
    
        const regiterUrl = "link to the register_page.php";
    
        $("#registerForm").on("submit", function (event) {
    
            event.preventDefault();
            const formData = $(this).serialize();
            $("#login-text").fadeIn();
            $("#div-form").hide();
            $("#btn-register").attr("disabled", true);
    
            $.ajax({
                type: "post",
                url: regiterUrl,
                data: $("#registerForm").serialize(),
                datatype : "application/json",
                success: function (response) {
    
                    if( response.success == true ) {
                        //Success
                        $('#exampleModalCenter').modal('hide')
                    } else {
                        var errors = response.errors;
                        //Code for display errors
                    }
    
                },
                error: function (response) {
                    alert("WYSTĄPIŁ BŁĄD");
                }
            })
        })
    });