2012-04-13 6 views
0

XML変数をJS変数に読み込む方法については、何度もここに掲載されていますが、これはうまくいくソリューションが見つかりませんでした。私のスクリプトでは、ajaxリクエストの前に変数を宣言し、その結果を変数に追加します。これは、スクリプトにアラートを追加した場合にのみ機能します。JS変数なしでjQueryを使用してJS変数にXMLをロードする

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

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

答えて

1

AJAXリクエストが非同期です。つまり、成功オプションで指定した機能は後で実行されます。

リクエストを開始しても、変数はまだ空です。ブロッキング・アラートを確認するのに十分な時間待つだけで、変数がロードされます。

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

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(); 
     }); 
    } 
}); 
関連する問題