Ajax Jquery function params

Ajax Jquery function params

本文关键字:params function Jquery Ajax      更新时间:2023-09-26

我有这个代码可以工作,但我想使更通用。

此代码使用 Ajax 提交表单,并获取以下 json:

{"message": "Verifique todos los campos","success": "false"}

取决于成功与否 在我的 #MESSAGE-DIV 中添加一个类,所以我想传递给功能

#MESSAGE-DIV,改为哈尔编码

var frm = $('#loginForm');
frm.submit(function () {
    $.ajax({
        dataType: "json",
        type: frm.attr('method'),
        url: frm.attr('action'),
        data: frm.serialize(),
        success: function (data) {                                            
            if(data['success'] == "true") {
                alerta = "alert alert-success";
                $("#MESSAGE-DIV" ).removeClass( "alert alert-error" )
                $("#MESSAGE-DIV" ).html(data['message']).addClass(alerta);
                window.setTimeout(function() {
                    window.location.href = '/stockrecetas/';
                }, 3000);
            } 
            else {
                alerta = "alert alert-error";
                $("#MESSAGE-DIV" ).removeClass( "alert alert-success" )
                $("#MESSAGE-DIV" ).html(data['message']).addClass(alerta);
            }    
        },
        error: function(data) {                    
        }
    });
    return false;
});

这是我的 HTML 表单:

<form id="loginForm" method="POST" action="login"><input type="hidden" name="csrfmiddlewaretoken" value="2EDW4oyrAPToDObfiaXQO95oFOGM9H5B">              
    <div id="MESSAGE-DIV"></div>
    <label for="id_username">Username:</label><input id="id_username" maxlength="30" name="username" type="text">
    <label for="id_password">Password:</label><input id="id_password" name="password" type="password">                          
    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
    <button class="btn btn-primary" type="submit" value="Login">Log In</button>
</form> 

做一个很好的函数,它接受作为参数传递的选择器:

function submit(formEl, messageEl) {
    $(formEl).submit(function() {
        // ...
        $(messageEl).removeClass("alert alert-success");
        // ...
    });
});

(表格El只是为了进一步概括这一点)

就像James Lai说的那样,我做了一个函数witch接收参数并发送到de .ajax()

溶液:

function genericForm (form, messagediv) {
    var frm = form;
    frm.submit( function () {
        $.ajax({
            dataType: "json",
            type: frm.attr('method'),
            url: frm.attr('action'),
            data: frm.serialize(),
            success: function (data) {                                            
                if(data['success'] == "true") {
                    alerta = "alert alert-success";
                    $(messagediv).removeClass( "alert alert-error" )
                    $(messagediv).html(data['message']).addClass(alerta);
                    window.setTimeout(function() {
                    window.location.href = '/stockrecetas/';
                    }, 3000);
                } 
                else {
                    alerta = "alert alert-error";
                    $(messagediv).removeClass( "alert alert-success" )
                    $(messagediv).html(data['message']).addClass(alerta);
                }    
            },
            error: function(data) {                    
            }
        });
        return false;

    });

   };

所以我以这种方式调用该函数:

    var frm1 = $('#registerForm');
    frm1.submit(genericForm(frm1, "#MESSAGE-DIV1"));