2012-04-13 62 views
0

我知道關於將XML加載到一個JS變量的問題已經發布在這裏很多次,但我沒有找到一個解決方案,將工作。在我的腳本中,我在ajax請求之前聲明一個變量,然後將結果添加到變量中。這僅適用於在腳本中添加警報時:將XML加載到JS變量與jQuery沒有JS警報

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數據肯定可用。

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