0

XMLをJS変数にロードすることについての質問が何度もここに投稿されていることは知っていますが、うまくいく解決策は見つかりませんでした。私のスクリプトでは、ajaxリクエストの前に変数を宣言し、その結果を変数に追加します。これは、スクリプトにアラートを追加した場合にのみ機能します。

var myDB;
$.ajax({
    type: 'GET',
    url: 'db.xml',
    dataType: 'xml',
    success: function (xml){
        myDB = xml;
    }
});

alert(myDB); //returns: undefined

$(myDB).find('item').each(function (){
    var question = $(this).find('question').text();
    alert(question);
});

上記のコードはアラートでのみ機能します。アラートを削除すると、コードが機能しません。アラートなしでこれを機能させるにはどうすればよいですか?

4

2 に答える 2

2

そのためには、コードを成功ハンドラーに追加する必要があります。

var myDB;
$.ajax({
    type: 'GET',
    url: 'db.xml',
    dataType: 'xml',
    success: function (xml){
        $(myDB).find('item').each(function (){
            var question = $(this).find('question').text();
        });
    }
});
于 2012-04-13T13:02:41.840 に答える
1

ajax リクエストは非同期です。つまり、success オプションで指定した関数は後で実行されます。

リクエストを開始した後、変数はまだ空です。ブロッキング アラートを確認するのに十分な時間待機した場合にのみ、変数が読み込まれます。

xml データが確実に利用できる場合、反復を success 関数に追加する必要があります。

于 2012-04-13T13:03:36.303 に答える