본문 바로가기
프로그래밍/웹 프로그래밍

[jQuery] XML 처리시 IE에서 find 함수가 동작하지 않는 경우

by 체리 2009. 11. 25.
반응형

아...꼬박 이틀동안 삽질했다 -_-;;;;
jQuery를 배워보고자 어제부터 즐겨하는 게임을 위해(WOW) PostgresSQL+PHP+jQuery로 간단한 프로그래밍을 시작하였다.

암튼!
jQuery로 AJAX와 XML 처리가 간단하다고 하여...요즘 트랜드라고도 하고...해서...
jQuery로 해당 부분을 시험삼아 개발하고 있는 중...
Iron(≒크롬)과 Firefox에서는 정상동작 하지만 IE(익스플로러)에서는 동작하지 않는 것을 발견하였다.

먼저 처리할 XML 문서는 다음과 같다.
<?xml version="1.0" encoding="UTF-8" ?><Users>
    <user id="1" userid="test2" name="체리" time_stamp="1259052018" />
    <user id="2" userid="test" name="테스트" time_stamp="1259052020" />
</Users>

이렇게 문서가 정상적으로 처리되는 것을 확인하였고 각 브라우저에서도 제대로 읽히는 것을 확인하였다.
하지만...다음의 자바스크립트 코드로 읽어보니...IE에서만 동작하지 않는 것이다.
$.ajax({
	type: "GET",
	url: "<?=$wow['path']?>/ajax/userlist.php",
	dayaType:"xml",
	success: processXML});

function processXML(xml){
	var i = 0;
	$(xml).find('user').each(function() {
		$("#userTable").append("<tr id=\"userTableRow_"+(i)+"\">"
		+"<td><a href=\"javascript:deleteRow('userTableRow_"+(i++)+"');\">삭제</a></td>"		+"<td>"+$(this).attr("userid")+"</td>"
		+"<td>"+$(this).attr("name")+"</td>"
		+"<td>"+$(this).attr("time_stamp")+"</td>"
		+"</tr>");
	});
	displayFootCaption('userTableFoot', $("#userTable tbody tr").length);}

이것저것 하다 알아보니 $(xml).find("user")에서 find() 함수가 동작하지 않는 것을 확인하였다..
왜 그럴까..왜 그럴까...무지하게 고민하고 책도 보고 인터넷도 찾아보고 하는 도중..
아래의 블로그를 찾아내었다.
결론을 말하면..
IE에서 해더 없이는 XML로 제대로 인식이 안 된다는 것이었다.
왜!!!!!!!!!! 왜!!!!!!! 그냥 문서를 직접 URL 타이핑 해서 읽을 땐 XML로 잘 인식을 했냔 말이다 ㅠㅠ

위의 블로그에 해결 방안들을 제시하고 있지만, XML 문서를 생성하는 소스를 수정하는 것이 제일 정직하고 확실한 방법인 것 같다.
아래와 같이 해더를 추가해 주면 된다.
PHP로 개발하고 있는 것이기에 아래와 같이...
header('content-type:application/xml; charset=utf-8');

PHP가 아니라 다른 언어로 개발 중이라면 위의 내용과 맞게 수정해 주면 된다.
단, 지금 개발 하는 것이 UTF-8로 개발하고 있기에 위의 코드가 나오는데..
euc_kr이나 다른 언어로 개발 중이라고 하면 해당 언어 코드로 변경을 해 주어야 하는 것은 당연!!

감사합니다. LazyGyu님! ^^
반응형

댓글5