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

标签 javascript ajax database

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

我有两个 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/

相关文章:

database - Heroku billing dynos 是如何工作的?

php - 无法使用表单在数据库中插入值

javascript - 类似于 SOOT 的 Javascript 程序分析工具

javascript - 元素在体内找不到足够的空间 - JavaScript 样式

javascript - jQuery 似乎不适用于浏览器

json - 如何从 Yahoo Finance API 获取 10 个以上的搜索结果?

javascript - 在数据库服务器中存储 UDID - Android

javascript - 如何强制在运行时加载媒体,而不是现在播放?

javascript - 如何在 Jquery 中为每个循环增加 html 类名

mysql - 如何使用默认语言查询表中的多语言记录