如何使用jquery和deferreds改进Ajax调用?

时间:2014-07-31 15:43:22

标签: javascript jquery ajax

我正在$(document).ready(function(){}进行四次或更多次ajax休息。 作为一个黑客,我添加.done()到最大的呼叫。它正在工作。"我想改进并为页面的一部分添加旋转gif,而不是整个身体。我尝试了整个身体的方法,微调器在我的页面过渡时启动。我想避免这种情况。

$.getJSON("//urls", function( data ) { data122 = data });
$.getJSON("//urls", function( data ) { data212 = data});
$.getJSON("//urls", function( data ) { data21 = data});
$.getJSON("//urls", function( data ) { data12 = data});


$.getJSON("//urls", function( data ) { survey = data})
    .done(function() {

}

2 个答案:

答案 0 :(得分:1)

另一种方法是使用deferred:

$(function() { // on document ready
    $("#spinner").show(); // show the spinner

    var a = $.getJSON(...);
    var b = $.getJSON(...);
    // more calls...

    $.when(a,b).always(function() {
        $("#spinner").hide();
    });
});

http://api.jquery.com/category/deferred-object/

答案 1 :(得分:0)

<script type="text/javascript">
    $(document).ready(function()
    {
        $('#loading')
            .hide()
            .ajaxStart(function() {
                $(this).show();
            })
            .ajaxStop(function() {
                $(this).hide();
            });
    });
</script>

<div id="loading">
        Loading....
</div>

我在这里找到了这个 https://stackoverflow.com/a/7082403/2630817