jQuery:在响应另一个函数后执行ajax请求

时间:2014-07-21 10:33:05

标签: jquery ajax function

我有这个表格

<form action="ajax/add-category" method="post" class="default-form" id="preventForm">
    <h2 class="form-title">Nuova categoria</h2>
    <div class="cf form-type cols-full">
        <div class="form-object">
            <label for="name"></label>
            <input type="text" class="req" name="name" id="name" placeholder="Nome categoria">
        </div>
    </div>
    <button type="button" class="form-btn btn-medium btn-green check-inputs" id="submitCategory">Aggiungi categoria</button>
    <button type="button" class="cancel-overlay">Annulla</button>
</form>

我有两个不同的功能。

  1. 如果button有一个类check-inputs并且它返回一个响应(true / false),则执行第一个函数req已全部填满。

  2. 第二个函数执行AJAX以在数据库中插入数据。

  3. 我希望第二个函数只在第一个函数返回true时执行,所以如果所有必需的输入都被填充。

    这是AJAX功能

    /* submit the form via ajax */
    $(document).on('click', '#submitCategory', function(){
    
        var $self   = $(this),
            $form   = $self.closest('form'),
            url     = $form.prop('action'),
            method  = $form.prop('method'),
            data    = $form.serialize();
    
        $.ajax({
            url: url,
            type: method,
            data: data,
            success: function(rsp) {
                console.log(rsp);
            }
        });
    
    });
    

    这可能还是我必须合并这两个功能?

    我想将它们分开,所以我可以使用第一个检查其他AJAX请求输入的函数。

    谢谢。

    修改

    我应该提到这两个函数分别位于两个文件中,响应不是全局的。

1 个答案:

答案 0 :(得分:1)

使用全局window范围的快捷方式:

JS1:

window.yourCheckFunction = function() {
    ...
    // return true or false
}    

JS2:

/* submit the form via ajax */
$(document).on('click', '#submitCategory', function(){

    var $self   = $(this),
        $form   = $self.closest('form'),
        url     = $form.prop('action'),
        method  = $form.prop('method'),
        data    = $form.serialize();

    if (yourCheckFunction()) {
        $.ajax({
            url: url,
            type: method,
            data: data,
            success: function(rsp) {
                console.log(rsp);
            }
        });
    }

});

但最好使用模块组织代码。您将拥有一些JS个文件来创建/扩展一个模块,模块的范围可以从任何模块的功能访问。奖励 - 您可以使用RequireJS等技术按需加载JS个文件。