CI 묻고 답하기

제목 CI 질문은 아니구요; jQuery 질문인데요ㅠㅠ
글쓴이 터프키드 작성시각 2010/02/11 17:49:04
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 24555   RSS
 $.get 이나 $.post 등으로 xml 을 불러와서 파싱하고 해당 값을 전역변수로 사용하려고 하는데요
var result;
$.post(
"aa.xml", 
{}, 
function(xmlData) { 
result = $.xml2json(xmlData);
alert(result); // json 변환됨
}, 
"xml");
alert(result); // 안됨;
어떻게 해야 저 result 를 전역변수로 사용할 수 있을까요?ㅠㅠ
 다음글 [초보]메치박스와 위젯에 관하여 (3)
 이전글 native session 쿠키관련 (5)

댓글

변종원(웅파) / 2010/02/11 21:31:08 / 추천 0
result='';
$.post(
"aa.xml", 
{}, 
function(xmlData) { 
result = $.xml2json(xmlData);
alert(result); // json 변환됨
}, 
"xml");
alert(result);

 또는 this.result = $.xml2json(xmlData); 로 쓰면 안될랑가요? ^^

케이든 / 2010/02/12 03:59:48 / 추천 0
할수있긴 합니다만..


보면 저 함수는 onComplete때 실행되는 함수입니다

타임아웃없이 저상태로만 쓴다면 아래쪽 alert이 complete함수보다 먼저 실행됩니다

그러므로 아래 alert이 이미 실행된후 result에 xml이 들어가게됩니다

아래 alert에 딜레이를 설정하셔서 몇초뒤에 실행해보시면 되긴합니다

하지만 complete함수 안에서 해결하는쪽이 좋겟죠?
터프키드 / 2010/02/12 09:18:47 / 추천 0
@웅파
ㅠㅠ 안되네요; this 키워드가 안먹나봐요

@케이든
맞습니다! 아래 alter이 먼저 실행되요 왜 그런가 했더니;;;; 그런 이유였군요
혹시 ajax관련 함수(post, get)말고 xml파일을 읽어들일 방법이 있나요?ㅠ
아.. 결국 json으로 해야하나..

아, 어짜피 자바스크립트에서는 특정 이벤트때 사용되는거니 그냥 써도 되겟네요! 전 전역변수에 설정이 안됬는줄 알고;
두분 감사합니다~

byung82 / 2010/02/17 10:34:13 / 추천 0
 이런씩으로 하시면 됩니다.
var self = this;
$.post(
"aa.xml", 
{}, 
function(xmlData) { 
self.result = $.xml2json(xmlData);
alert(self.result); // json 변환됨
}, 
"xml");
alert(self.result);

테스트는 안해봤습니다.
저린씩으로 global 하게 self를 정의해서 사용하셔도 됩니다 ^^;

그럼