我在几天内搞乱了jQuery和AJAX,我已经走到了尽头。我试图用AJAX加载一些内容 - 这部分工作正常 - 之后我想执行其他脚本。但是,我的第一个脚本加载的内容在第二个脚本完成之前不会显示。代码如下所示:
$(function () {
$(window).scroll(function() {
if (document.body.scrollTop > 30) {
addArt();
}
});
});
触发整个代码,但在所有控制台消息之后,图像显示在网站上。有没有人有任何建议如何首先显示图片?我也尝试过done()。和ajaxStop(),仍然没有效果。
答案 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);
});