IE와 Opera에서 jQuery를 이용한 XML 파싱이 안 될때 해결 방법

jQuery를 이용해서 XML 문서 AJAX 통신하여 가져와서 그래프를 그리는 작업을 하는데 Firefox 에서만 정상 작동하는 문제가 있었습니다.  IE, Opera에서는 오류도 없이 XML 파싱이 안되었죠.

$.get(‘./summary_sample.php’, function(data){
renderChartfromXML(data, p_chart_type)
}, ‘xml’);

특별한 오류 내용도 없고 정상 작동하는것 같은데 XML 문서를 파싱하지 못 할 때라면 XML 문서를 주는 서버의 해더 선언을 확인해 보셔야 합니다.

Firefox의 firebug나 Opera의 Dragonfly를 이용하여response 해더를 확인하면 XML 문서의 Context-type이 text/xml로 되어 있어야 합니다. PHP에서 XML을 생성하는 경우 text/html로 되어 있을것입니다. 이런경우 아래와 같이 text/xml로 해더를 선언해 줘야 AJAX 로 가져온 값이 XML Documents Object로 처리되어 파싱이 됩니다.

header(‘Content-Type: text/xml; charset=utf-8’);

외부 서버이거나 서버에 설정을 변경할 수 없는 경우는 IE에서는 아래와 같이 ActiveXObject를 사용하여  강제로 XML 문자열을 XML Document Object로 변경해 줄 수 있습니다.

$.get(‘./summary_sample.php’, function(data){
if ( typeof data == typeof ‘string’ && typeof ActiveXObject != typeof undefined ) {
var xml = new ActiveXObject(“Microsoft.XMLDOM”);
xml.loadXML(data);

data = xml;
}
renderChartfromXML(data, p_chart_type)
}, ‘xml’);

Advertisements

Published by: benant

WEB PROGRAMMER. PHP, ASP, XML, Javascript, VBScript, PL/SQL, MySQL, Oracle. scrollads.co.kr 새로운 모바일 광고 서비스. trenue.com 시스탬 트래이딩 서비스. blogman.co.kr 블로그 운영 관리 서비스. creget.co.kr 해외 상품 구매대행. 핫딜 정보 제공 서비스. fgshop.co.kr - 독립형 쇼핑몰 솔루션.

카테고리 Web태그, , , , 댓글 남기기

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중