gpt4 book ai didi

javascript - 在提供值的 onload 函数完成后,如何执行需要值的 Javascript 函数?

转载 作者:数据小太阳 更新时间:2023-10-29 05:13:07 25 4
gpt4 key购买 nike

我知道这是一个很长的问题,所以请允许我尽可能地解释一下。

我有两个 javascript 函数,我想在页面加载后运行,我们将它们称为 function1() 和 function2()。

function1() 使用AJAX 从数据库中检索信息,将数据库中获取的信息中的内容排列在一个div 中。函数完成后,它还会返回数据库中的内容。

function2() 需要数据库中的值才能正常运行,因此它需要等到 function1() 返回其值,然后 function2() 运行。不幸的是,我的代码无法正常工作,无需过多介绍,下面是代码示意图:

function function1() {
if (some_cookie_exists) {
//run some code
} else {
//send parameters through "POST"
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var a = some_value_from_database;
// change div content
return a;
}
}
//sending parameters
}
function function2(a) {
//run code that depends on value of "a"
}

window.onload = function() {
var data = function1();
function2(data);

我得到的错误是 var 数据未定义。 function1() 成功检索数据,并按我的预期运行,但 function2() 根本不执行,因为缺少值。任何人都可以弄清楚为什么我得到这个以及我应该如何解决这个问题吗?

注意:我真的只熟悉 Javascript(在那方面还是新手),我对 JQuery 基本上一无所知,所以如果你确实使用它来修复代码,请向我解释为什么它有效(它会省去我的麻烦稍后)

最佳答案

AJAX 是异步的(这就是第一个 A 所代表的意思)。 AJAX 操作的结果在 function1() 中不可用,它们在附加到 XMLHttpRequest 对象的 onreadystatechange 处理程序中检索。所以不清楚你会怎么做

var a = some_value_from_database;

function1() 中。

您需要做的是从 onreadystatechange 处理程序调用 function2()

如果您发布 function1 的实际实现,我们可能会提供更具体的细节。

更新:

以下是当 AJAX 调用中的值可用时调用 function2() 的方法:

xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var a = some_value_from_database;
function2(a);
}
}

关于javascript - 在提供值的 onload 函数完成后,如何执行需要值的 Javascript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13986346/

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