在加载函数外访问变量

时间:2011-09-13 11:23:12

标签: javascript android mobile titanium-mobile

您好我正在使用钛工作室开发Android应用程序开发。我开发了一个小应用程序。我的问题是我无法访问xhr.on load中定义的变量。我使用下面的代码:

xhr.onload = function()
{
var json = this.responseText;
var to_array = JSON.parse(json);
var to_count = to_array.length;
};

我想在onload函数外部访问to_count和to_array并将其传递给另一个子窗口。为此,我使用了以下代码:

var feedWin = Titanium.UI.createWindow({
    url:'home/feed.js'
});//alert(to_count);
feedwin.to_array = to_array;
feedwin.to_count = to_count; 

3 个答案:

答案 0 :(得分:1)

默认情况下,XHR客户端是异步的,这意味着代码将在XHR运行时继续执行。如果您的代码依赖于您的XHR,那么您需要从onload函数中调用该代码,或者通过将“false”作为第三个参数添加到xhr.send()来强制XHR同步(我发现第一个选择是更可靠的选择,更符合Titanium的期望/感觉是最佳实践,仅限FYI)。

答案 1 :(得分:0)

实现此目的的最佳方法是初始化feedWin中的onload。因此,以下两个片段之一应该有效:

xhr.onload = function()
{
    var json = this.responseText,
        feedWin = Titanium.UI.createWindow({
            url:'home/feed.js'
        });//alert(to_count);

    feedWin.to_array = JSON.parse(json);
    feedWinto_count = to_array.length;
};

var feedWin = Titanium.UI.createWindow({
        url:'home/feed.js'
    });

xhr.onload = function()
{
    var json = this.responseText,

    feedWin.to_array = JSON.parse(json);
    feedWinto_count = to_array.length;
};

我不熟悉Titanium,所以我不知道具体细节,但这是我最好的猜测。

答案 2 :(得分:-1)

我对Titanium不是很熟悉,但是对于声明范围,我认为这是你在函数之外使用它们所需要做的。

var to_array;
var to_count;


xhr.onload = function()
{
var json = this.responseText;
to_array = JSON.parse(json);
to_count = to_array.length;
};
相关问题