递归javascript / ajax函数:无法访问函数内部设置的全局变量

时间:2012-01-04 22:17:58

标签: javascript ajax recursion

在我的ajax应用程序中,我正在尝试使用递归函数,其中调用另一个函数创建一个全局变量,我想在递归函数中使用该变量。但是,我遇到了麻烦,因为我无法在递归函数中访问该全局变量(尽管如果我自己调用该函数它是可用的)。递归函数的代码如下。

ajaxCity.displayCell()设置一个window.cells []变量,其中包含一个数字数组。我们的想法是为每个数字调用tree()函数。

function tree (topCell) {
    var ajaxCity = new Ajax();  
    ajaxCity.displayCell(topCell);

    for (var i = 0; i < window.cells[topCell].cKids.length; i++) {
        tree(window.cells[topCell].cKids[i]);
    }
}

在运行一次函数后,可以使用的window.cells []变量,但是如何更改进程以使其按照我想象的方式工作?

感谢您的帮助!

编辑:这是我得到的错误。

TypeError: window.cells[topCell] is undefined

如果我再次调用树函数,它将更深一个“级别”,然后再次出错,等等

=====

感谢James Montagne,正如您所指出的,问题是我需要等待ajax请求回来。再次感谢!

2 个答案:

答案 0 :(得分:2)

我在这里根据变量名做了一些假设,但我认为是

ajaxCity.displayCell(topCell);

将进行ajax调用,其结果将是window.cells...的创建。

如果是这种情况,问题是AJAX是异步的(那是第一个A)。如果您发出AJAX请求,然后立即尝试使用该请求的结果,则无法找到结果。这是因为AJAX请求尚未返回。您需要在AJAX请求的回调中使用结果。

答案 1 :(得分:0)

window.cells=new Array();

在全球范围内。