等待来自另一个函数的ajax调用而不使用全局变量?

时间:2015-11-20 13:25:42

标签: jquery ajax

我不是使用全局变量的粉丝,但我无法找到另一种方法来实现我想要做的事情:

window.op_ajax = null;

function addsomestuff_intohtmltable() {
    $.when( op_ajax ).done(function ( data ) {
        //NOW we are sure that the html-table is created with a div 
        // thas has class indigo

        //Add some content into div with class indigo
    });
}

function create_htmltable() {        
    var op_ajax = $.ajax({            
        type: 'POST',   //etc, data etc...
    });

    op_ajax.done(function(content_data) {
       //Create a table with some html
       //In this table we have a div with indigo
    });                        

    op_ajax.fail(function(ts) {         
       alert(ts.responseText);
    });
}

上面的代码完成了它必须做的事情。它等待通过ajax调用创建的html表,然后将一些内容添加到另一个函数内创建的html表的一部分中。

我永远都不知道这两个函数何时执行以及它们需要多长时间。我正在使用window.op_ajax来使用deferred对象,但有没有更好的方法(不使用全局变量)?我也在使用其他一些ajax功能。

1 个答案:

答案 0 :(得分:1)

对于我所看到的,你可以使用两种方式:

ajax回调:

function addsomestuff_intohtmltable() {

        //Add some content into div with class indigo
}

function create_htmltable() {        
    $.ajax({            
        type: 'POST',   //etc, data etc...
    })
    .done(function(content_data) {
       //Create a table with some html
       addsomestuff_intohtmltable(); // << run the second function 
    });                        
    op_ajax.fail(function(ts) {         
       alert(ts.responseText);
    });
}

这是最佳选择以及如何应对此类问题

另一个用于高级内容,当callBack不够时:

您将listener与父元素上的函数绑定在一起,就像updated上的<table>一样,然后使用trigger