2012-04-13 2 views
0

JS 변수에 XML을로드하는 것에 관한 질문이 여러 번 여기에 게시되었지만 작동 할 해결책을 찾지 못했습니다. 내 스크립트에서는 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

아약스 요청이 비동기입니다. 즉, 성공 옵션에서 제공 한 기능이 나중에 실행됩니다.

요청을 시작한 후에도 변수가 여전히 비어 있습니다. 차단 경고를 확인하기 위해 충분히 오래 기다렸을 경우에만 변수가로드됩니다.

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