2

こんにちは私はチタンスタジオを使用してAndroidアプリケーション開発に取り組んでいます。小さなアプリケーションを開発しました。私の問題は、xhr.onロード内で定義されている変数にアクセスできないことです。次のコードを使用しました:

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; 
4

3 に答える 3

1

XHRクライアントはデフォルトで非同期です。つまり、XHRの実行中もコードは実行され続けます。終了するXHRに依存するコードがある場合は、onload関数内からそのコードを呼び出すか、3番目のパラメーターとして「false」を追加してXHRを強制的に同期させる必要がありますxhr.send()(私は見つけましたより信頼性の高いものにするための最初のオプションであり、Titaniumが期待/感じているものに沿ったものがベストプラクティスであり、参考までに)。

于 2011-11-02T14:32:59.420 に答える
0

これを実現する最良の方法は、でを初期化するfeedWinことonloadです。したがって、次の2つのスニペットのいずれかが機能するはずです。

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;
};

私はチタンに詳しくないので、詳細はわかりませんが、それが私の推測です。

于 2011-11-02T14:39:37.683 に答える
-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;
};
于 2011-09-13T11:26:03.913 に答える