본문 바로가기
IT/자바스크립트

[자바 스크립트] ajax callback 함수에서 xml 파싱

by 불멸남생 2023. 4. 25.

1. 개요

     ajax callback 함수에서 xml로 전달받은 내용에서 값을 추출하기 위함이지만 중요한 것은 내가 작업을 한 것을 잊지 않기 위해 작성함.

 

2. 상세내용

    - ajax callback 함수에서 2개의 xml 을 전달받고 값을 추출하기 위함.     

    - ajax를 호출을 할 때 2개 이상의 처리 데이터 그룹을 받고자함.

       (DB에서 받은 목록이 2개 일 때 건마다 ajax 호출을 하면  일도 많아도 반복적인 소스가 발생하여 한번 호출할 때 필요한

        데이터를 모두 받아오기 위함임)

 

3. 구현

    - ajax callback 함수에서 전달 파라미터로 받는 json, instant, node, xmlDoc  중 xmlDoc를 이용함.

    - 별도의 전달 옵션을 설정하지 않음.

    - 우선 전달받은  xmlDoc에 데이터 그룹이 맞는지 확인하기 위하여   ajax callback 함수 호출 시 setOnAfterAction에

       전달받을 Callback  함수명을 추가한다.  

// java ajax 처리 예시코드 이며 동작안함.
sync ajax = new sync("UTF-8")
syncMuiltData  sysnData1 = new SyncMuiltData(test1);
syncMuiltData  sysnData2 = new SyncMuiltData(test2);

ajax.add(sysnData1);
ajax.add(sysnData2);

sysnData1.setOnAfterAction("callbaktest1");
sysnData1.setOnAfterAction("callbaktest2");

     - 위와 같이  ajax를 동작시하고 난 후 Callback 처리 가 되면 아래와 같이 XML을 확인하여 데이터 그룹을 분리할 수 있다.

// 예시 코드 임, 동작안할수 있음.
// 'callbacktest1' 일때
var totcnt = xmlDoc.childElementCount;   // 항목 개수 확인
var index = 0;
for(var i = 0;i< totcnt; i++){
    if(xmlDoc.children[i].attributes.onAfterAction.value == "callbacktest1"){
 		index = i;
 		break;
 	}
}
 // 데이터가 하나일때
 $("#lable1").val($(xmlDoc).find('name1').eq(0),text();
 $("#lable2").val($(xmlDoc).find('name2').eq(0),text();
 $("#lable3").val($(xmlDoc).find('name3').eq(0),text();


// 'callbacktest2' 일때

for(var i = 0;i< totcnt; i++){
    if(xmlDoc.children[i].attributes.onAfterAction.value == "callbacktest2"){
 		index = i;
 		break;
 	}
}
 // 데이터가 하나이상일 때
 // for Each 사용일때
$(xmlDoc.childrtn[index]).find('name4').forEach((number,i){
	$("#lable"+i+"1").val($(xmlDoc).find('name1').eq(i),text();
 	$("#lable"+i+"2").val($(xmlDoc).find('name2').eq(i),text();
 	$("#lable"+i+"3").val($(xmlDoc).find('name3').eq(i),text();
});

 // for 문 사용
 for(vari=0;$(xmlDoc.children[index]).find("name1").siz();i++)
 {
 	$("#lable"+i+"1").val($(xmlDoc.children[index]).find('name1').eq(i),text();
 	$("#lable"+i+"2").val($(xmlDoc.children[index]).find('name2').eq(i),text();
 	$("#lable"+i+"3").val($(xmlDoc.children[index]).find('name3').eq(i),text();
 }

    - xml 파싱시 주의점.

       변수(?) 이름은 유니크하게 정해야 함. 안 그럼 나도 모르는 곳에서  잘못된 값이 표시됨.

 

 

 

 

반응형