2013-02-27 81 views
0

我想在ajax调用之前和期间向用户显示“加载程序”。这里的代码(简化版...)多个jQuery的HTML()分配不工作

$(document).ready(function() { 
    $("#btn").click(function(){ 
     $("#log").html("loading ajax call..."); 
     anotherFunc(); 
    }); 
}); 


function anotherFunc(){ 
    $.ajax({ 
     type: "GET", 
     url: correct_url, 
     data: data_to_send, 
     dataType: "jsonp", 
     success: function(data){ 
     $("#log").html("new html"); 
     } 
    }) 
} 

问题是“加载ajax调用...”从不出现。我只看到“新的html”显示。单曲阿贾克斯#log修改调用工作完全独自(没有其他)

有没有另一种方法呢? 我做错了什么?

ps。我也尝试在另一个id(#log2)中写入相同的结果。

+0

最有可能您的'.ajax'具有'async:false'。将其更改为'async:true'(或将其完全移除),它将起作用。 – 2013-02-27 22:00:37

+1

显示'(...)'里面的东西你确定你的ajax调用没有很快完成吗?你使用的是什么浏览器?不同的浏览器以不同的速度渲染,如果你的ajax调用速度非常快,那么你将永远看不到加载字符串。 – Brandon 2013-02-27 22:01:01

+1

难道这只是因为AJAX调用返回得如此之快以至于您只是看不到原始文本? – Steve 2013-02-27 22:01:11

回答

1

很可能一切正常,但AJAX调用返回非常快(特别是如果您在本地测试)。要查看是否属于这种情况,请执行以下操作:

$(document).ready(function() { 
    $("#btn").click(function(){ 
     $("#log").html("loading ajax call..."); 
     setTimeout(function(){anotherFunc();},2000); 
    }); 
});