我的$(文档).ajaxComplete()不起作用

时间:2016-11-04 15:12:11

标签: javascript jquery ajax

我在几天内搞乱了jQuery和AJAX,我已经走到了尽头。我试图用AJAX加载一些内容 - 这部分工作正常 - 之后我想执行其他脚本。但是,我的第一个脚本加载的内容在第二个脚本完成之前不会显示。代码如下所示:

$(function () {
  $(window).scroll(function() {
    if (document.body.scrollTop > 30) {
      addArt();
    }
  });
});

触发整个代码,但在所有控制台消息之后,图像显示在网站上。有没有人有任何建议如何首先显示图片?我也尝试过done()。和ajaxStop(),仍然没有效果。

3 个答案:

答案 0 :(得分:1)

你必须使用ajax的.done()函数来获得异步结果:



var jqxhr = $.ajax( "example.php" )
  .done(function(data) {
    alert( "success : " + data  );
  })
  .fail(function() {
    alert( "error" );
  })
  .always(function() {
    alert( "complete" );
  });




答案 1 :(得分:0)

为什么不在将图片加载到ajax调用的成功函数后移动要运行的代码,并在代码加载图片后执行此操作?

$.ajax({
    url : folder,
    success: function (data) {
        //Code to load pictures

        console.log("Haba");
        var x = 0;
        while( x < 50000 ) {
            console.log("Haba nr "+x);
            x++;
        }
    });

我认为它不按你想要的方式运行的原因是因为ajax调用在得到响应之后就完成了。该响应触发ajax完成函数,该函数在ajax调用的success函数中的逻辑之前运行。此外,您编写的方式,即使您的ajax调用失败,ajax完整逻辑也会触发。我不认为你想要的。

答案 2 :(得分:0)

尝试使用setTimeout()

function ajaxDone(){
    console.log("Haba");
    var x = 0;
    while( x < 50000 )
    {
      console.log("Haba nr "+x);
      x++;
    }
}
$(window).ajaxComplete(function(){
  window.setTimeout(ajaxDone,1);
});