【问题标题】:AJAX register doesn't update divAJAX 寄存器不更新 div
【发布时间】:2018-06-17 10:54:47
【问题描述】:

所以我正在制作注册表单,并且我有 ajax 脚本来验证和提交数据。 这是代码:

$('document').ready(function() {
    /* validation */
    $("#register-form").validate({
        rules: {
            username: {
                required: true,
                rangelength: [4, 12]
            },
            email: {
                required: true,
                email: true
            },
            password: {
                required: true,
                rangelength: [4, 20]

            },
            password_repeat: {
                required: true,
                equalTo: "#password"
            },
        },
        messages: {
            username: {
                required: "*Моля въведете потребителско име",
                rangelength: "*Между 4 и 12 знака"

            },
            email: {
                required: "*Моля въведете имейл"

            },
            password: {
                required: "*Моля въведете парола",
                rangelength: "*Между 8 и 20 знака"

            },
            password_repeat: {

                required: "*Моля въведете паролата отново",
                equalTo: "*Паролите не съвпадат"

            },
        },

        submitHandler: submitForm
    });

    /* Handling login functionality */
    function submitForm() {
        var data = $("#register-form").serialize();
        $.ajax({
            type: 'POST',
            url: 'auth_logic/register-process.php',
            data: data,
            beforeSend: function() {
                $("#error").fadeOut();
                $("#register").html('<img src="images/loading.gif" width="31px" height="31px" /> &nbsp; Моля изчакайте ...');
            },
            success: function(response) {
                if (response == "ok") {
                    $("#register").html('<img src="images/loading.gif" width="31px" height="31px" /> &nbsp; Моля изчакайте ...');
                    $("#error").html('<div class="alert alert-danger"> &nbsp; ' + response + '</div>');
                    //setTimeout(' window.location.href = "/auth/login"; ',100);
                } else if (response == "Потребителското име е заето!") {
                    $("#error").fadeIn(100, function() {
                        $("#error").html('<div class="alert alert-danger"> &nbsp; ' + response + '</div>');
                        $("#register").html('&nbsp; Регистрация');
                    });
                } else if (response == "Този имейл е регистриран вече!") {
                    $("#error").fadeIn(100, function() {
                        $("#error").html('<div class="alert alert-danger">  &nbsp; ' + response + '</div>');
                        $("#register").html(' &nbsp; Регистрация');
                    });
                }
            }
        });

        return false;
    }
});

PHP 部分运行良好,但是当我想更新表单之前的“#error”div 时,它不起作用,但它会更新提交按钮。

这是表格:

<div class="container py-5">
<div class="row">
    <div class="col-md-12">
        <div class="row">
            <div class="col-md-6 mx-auto">
                <div class="card border-secondary">
                    <div class="card-header">
                        <center><h3 class="mb-0 my-2">Нов потребител</h3></center>
                    </div>
                    <div class="card-body">
                        <div id="error"></div>
                        <form class="form-group" method="POST" id="register-form">                              
                            <div class="form-group">
                                <label for="username">Потребител:</label>
                                <input type="text" class="form-control" name="username" id="username" placeholder="Потребителско име" >
                            </div>
                            <div class="form-group">
                                <label for="email">Имейл:</label>
                                <input type="email" class="form-control" name="email" id="email" placeholder="Имейл адрес" >
                            </div>
                            <div class="form-group">
                                <label for="password">Парола:</label>
                                <input type="password" class="form-control" name="password" id="password" placeholder="Парола">
                            </div>
                            <div class="form-group">
                                <label for="password_again">Парола отново:</label>
                                <input type="password" class="form-control" name="password_repeat" id="password_repeat" placeholder="Повторете паролата" >
                            </div>
                            <div class="form-group">
                                <button type="submit" name="register" id="register" class="btn btn-block btn-success btn-lg float-right">Регистрация</button>
                            </div>
                        </form>
                    </div>
                    <div class="card-footer">
                        <a href="login">Вход</a>
                    </div>                        
                </div>
            </div>
        </div>
        <!--/row-->

    </div>
    <!--/col-->
</div>
<!--/row-->

我清除了缓存刷新了400次,重命名了文件。我正在使用 XAMPP

【问题讨论】:

  • 成功里面的响应值是什么?
  • 没关系。如果数据成功保存在数据库中,它会回显。

标签: jquery ajaxform


【解决方案1】:

由于beforeSend:,您将#error 隐藏为.fadeOut();

success: 上,您替换了#error 中的内容,但它仍然不可见。 您需要添加 $('#error').show(); 之类的内容或包裹在里面:

$("#error").fadeIn(100, function() {
}

【讨论】:

  • 啊!谢谢你!顺便说一句,我还有什么其他方法可以检查 php 是否成功并显示更多自定义的错误/成功消息?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-11
  • 2021-11-03
相关资源
最近更新 更多