【问题标题】:double calls ajax using jquery使用 jquery 双重调用 ajax
【发布时间】:2012-04-01 07:51:37
【问题描述】:

两次调用:

$('#add').live('click', function() {

    $('.simplebox').slideUp(200, function() {
        $('html, body').animate({scrollTop:140}, 350, function() {
            $('#loading-add').slideDown(300, function() {
                $.ajax({
                    type: "POST",
                    url: "..",
                    data: getDataToPost(),
                    cache: false,
                    success: function(data){

                        alert(data);

                        $('#loading-add').delay(1000).fadeOut(200, function() {
                            $('#successfull-add').fadeIn(200);
                        });

                    }
                });
            });
        });
    });

})

但如果我在live 事件之后立即调用 ajax,它会按时调用(应该如此):

$('#add').live('click', function() {
                $.ajax({
                    type: "POST",
                    url: "..",
                    data: getDataToPost(),
                    cache: false,
                    success: function(data){

                        alert(data);

                        $('#loading-add').delay(1000).fadeOut(200, function() {
                            $('#successfull-add').fadeIn(200);
                        });

                    }
                });
})

有什么想法为什么会发生?真奇怪。。

谢谢。

【问题讨论】:

  • 您能更详细地解释您的问题吗?
  • 我认为您可能已经遗漏了一些问题,这有点不清楚。您能否添加任何内容以使我们更好地了解您的问题?
  • jQuery $.animate() multiple elements but only fire callback once 的可能重复项 - 问题是您的 animate 回调为每个元素调用一次,在本例中为 htmlbody。仅使用body 或该问题的答案。问题也可能出在其他动画方法上。
  • 只是通过 ajax 调用了两个,而不是一个。
  • @FelixKling 非常感谢,效果很好,理解问题所在。如果您愿意,请将其写为答案,我会接受。

标签: javascript jquery ajax


【解决方案1】:

尝试使用queue()

$('.simplebox').slideUp(200);
$('.simplebox').queue(function() {
    $('body').animate({scrollTop:140}, 350);
    $('body').queue(function() {
        $('#loading-add').slideDown(300);
        $('#loading-add').queue(function() { 
            //ajax call
        });
    });
})

【讨论】:

  • $('body') 就足够了,虽然我更新了代码以反映这一点,但它是相似的。
猜你喜欢
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 2018-05-02
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 2011-03-09
相关资源
最近更新 更多