如何执行Javascript函数需要一个onload函数完成后给出值的值?

Kev*_*n O 6 javascript database ajax

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

我有两个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);
Run Code Online (Sandbox Code Playgroud)

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

注意:我真的只熟悉Javascript(仍然是新手),我基本上对JQuery一无所知,所以如果你使用它来修复代码,请向我解释为什么这样做(以后会省事)

Bar*_*mar 4

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

var a = some_value_from_database;
Run Code Online (Sandbox Code Playgroud)

function1()

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

如果您发布实际实施情况,function1我们也许能够提供更具体的细节。

更新:

function2()以下是当 AJAX 调用中的值变得可用时如何调用:

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