반응형
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님! ^^
반응형
'프로그래밍 > 웹 프로그래밍' 카테고리의 다른 글
[XpressEngine] 심비안에서도 모바일 페이지를 보자 (0) | 2010.10.02 |
---|---|
[javascript] innerHTML 오류(IE 계열만) (0) | 2007.11.19 |
[struts] action에서 국제화 (0) | 2007.09.11 |
[iBATIS] The column index is out of range: 1, number of columns: 0 (0) | 2007.09.10 |
댓글