gpt4 book ai didi

javascript - ajax 调用完成后如何在 .scroll() 事件中运行函数?

转载 作者:行者123 更新时间:2023-11-30 09:20:31 26 4
gpt4 key购买 nike

我已经准备好一个带有内部 ajax 调用的函数,它可以从 MySql 数据库中推断值。然后,在 .scroll() 事件中,我有一个函数使用这个值来为一些 div 设置动画。

问题是有时 .scroll() 在 ajax 调用未完成时运行。

function values_database(){
$.ajax({
type: "POST",
url: 'events.php',
dataType:"json",
data: {
dal_mese1: 'example'
},
success: function (result) {
var return_php = JSON.parse(JSON.stringify(result));
values.push(return_php); //VALUES FOR ANIMATIONS
}
}

$(window).scroll(function(){
var top_window2 = $(window).scrollTop();
var bottom_window2 = top_window2 + $(window).height();
var top_statistiche = $('#somedivs').offset().top;
if(((top_statistiche >= top_window2) && (top_statistiche <= bottom_window2))){
animation_somedivs();
}
});

function animation_somedivs(){
//use values global array (with inside value from database, if ajax call is finish before "this" function is run
}

我该如何解决这个问题?(我不想使用 async: false)

非常感谢,对不起我的英语

最佳答案

基本上,如果你想在请求完成后运行一些东西,你可以将它放入 success 回调中。所以对你的代码稍作修改就可以做你想做的事

function values_database(){
$.ajax({
type: "POST",
url: 'events.php',
dataType:"json",
data: {
dal_mese1: 'example'
},
success: function (result) {
var return_php = JSON.parse(JSON.stringify(result));
values.push(return_php); //VALUES FOR ANIMATIONS

$(window).scroll(function(){
var top_window2 = $(window).scrollTop();
var bottom_window2 = top_window2 + $(window).height();
var top_statistiche = $('#somedivs').offset().top;
if(((top_statistiche >= top_window2) && (top_statistiche <= bottom_window2))){
animation_somedivs();
}
});

}
}

function animation_somedivs(){
//use values global array (with inside value from database, if ajax call is finish before "this" function is run
}

编辑

如果您的 ajax 请求在每次页面加载时运行多次,您将需要进行一些修改。

function handle_scroll() {
var top_window2 = $(window).scrollTop();
var bottom_window2 = top_window2 + $(window).height();
var top_statistiche = $('#somedivs').offset().top;
if(((top_statistiche >= top_window2) && (top_statistiche <= bottom_window2))){
animation_somedivs();
}
}
}
function values_database(){
$.ajax({
type: "POST",
url: 'events.php',
dataType:"json",
data: {
dal_mese1: 'example'
},
success: function (result) {
var return_php = JSON.parse(JSON.stringify(result));
values.push(return_php); //VALUES FOR ANIMATIONS

$(window).off('scroll', handle_scroll);
$(window).on('scroll', handle_scroll);

}
}

function animation_somedivs(){
//use values global array (with inside value from database, if ajax call is finish before "this" function is run
}

关于javascript - ajax 调用完成后如何在 .scroll() 事件中运行函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52097088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com