Javascript My$(document).ajaxComplete()不';行不通

Javascript My$(document).ajaxComplete()不';行不通,javascript,jquery,ajax,Javascript,Jquery,Ajax,几天来我一直在使用jQuery和AJAX,我已经走到了死胡同。我正在尝试用AJAX加载一些内容-这部分工作得很好-然后我想执行其他脚本。但是,在第二个脚本完成之前,第一个脚本加载的内容不会显示。代码如下所示: $.ajax({ url : folder, success: function (data) { $(data).find("a").attr("href", function (i, val) {

几天来我一直在使用jQuery和AJAX,我已经走到了死胡同。我正在尝试用AJAX加载一些内容-这部分工作得很好-然后我想执行其他脚本。但是,在第二个脚本完成之前,第一个脚本加载的内容不会显示。代码如下所示:

$.ajax({
            url : folder,
            success: function (data) {
                $(data).find("a").attr("href", function (i, val) {
                    if( val.match(/\.(jpe?g|png|gif)$/) ) { 
                        var $codeText = "<li class='ui-state-default'><a href='#' data-featherlight='" + folder + val + "'><img  src='" + thumbFolder + val + "' data-src='"+ thumbFolder + val + "'/></a></li>";
                        $("ul[id=sortable]").append($codeText);
                        $("li").featherlight(folder + val);
                    }; 
                });
            }
        })

$(window).ajaxComplete(function(){
    console.log("Haba");
    var x = 0;
    while( x < 50000 )
        {
        console.log("Haba nr "+x);
        x++;
        }
$.ajax({
url:文件夹,
成功:功能(数据){
$(数据).find(“a”).attr(“href”),function(i,val){
如果(val.match(/\(jpe?g | png | gif)$/){
var$codeText=“
  • ”; $(“ul[id=sortable]”。追加($codeText); $(“li”).featherlight(文件夹+val); }; }); } }) $(窗口).ajaxComplete(函数(){ 控制台日志(“Haba”); var x=0; 而(x<50000) { 控制台日志(“Haba nr”+x); x++; }

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

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

    $.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({
    url:文件夹,
    成功:功能(数据){
    //加载图片的代码
    控制台日志(“Haba”);
    var x=0;
    而(x<50000){
    控制台日志(“Haba nr”+x);
    x++;
    }
    });
    
    我认为它没有按照您希望的方式运行的原因是,ajax调用在收到响应后就完成了。该响应触发ajax调用成功函数中在您的逻辑之前运行的ajax complete函数。此外,按照您编写它的方式,即使您的ajax调用失败,ajax complete逻辑也会启动。我认为您不希望这样。

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

    var jqxhr=$.ajax(“example.php”)
    .完成(功能(数据){
    警报(“成功:+数据”);
    })
    .fail(函数(){
    警报(“错误”);
    })
    .always(函数(){
    警报(“完成”);
    })尝试使用setTimeout()

    函数ajaxDone(){
    控制台日志(“Haba”);
    var x=0;
    而(x<50000)
    {
    控制台日志(“Haba nr”+x);
    x++;
    }
    }
    $(窗口).ajaxComplete(函数(){
    设置超时(ajaxDone,1);
    });
    
    您正在阻止浏览器执行任何其他操作(例如添加/渲染图像)使用
    while
    循环,我试图找到一种方法,只有在调用完成后才能强制浏览器执行while循环。我的意思是,我仍然必须等到所有执行的代码显示图片。您可以编辑您的问题并添加加载图片的代码吗?以前尝试过,结果相同-所有代码都必须执行,结果相同显示了n张图片。请尝试使用$.post或$.get这更易于使用谢谢,我会尝试,但仍然-我想知道我的代码有什么问题:)
    function ajaxDone(){
        console.log("Haba");
        var x = 0;
        while( x < 50000 )
        {
          console.log("Haba nr "+x);
          x++;
        }
    }
    $(window).ajaxComplete(function(){
      window.setTimeout(ajaxDone,1);
    });