2010-03-16 4 views
1

나는 (HTTP이 XMLHttpRequest 객체이다)IE의 responseXML.getElementsByTagName()이 비영어권 문자를 처리 할 수 ​​없습니까?

var r = http.responseXML.getElementsByTagName('item'); 

문제는 응답이 영어가 아닌 문자가 포함 된 경우 변수 r은 항상 빈리스트입니다이 작업을 수행 자바 스크립트가 (r.length은 0).

는 응답 헤더는 콘텐츠 유형을 설정이 제대로되어 텍스트/XML을; 문자셋 = ISO-8859-1

이 그것은에만 발생

<?xml version='1.0' encoding='UTF-8'?> 
<d> 
    <r> 
    <item value="jmob" label="John Möb"/> 
    </r> 
</d> 

처럼 웹 서버에서 응답이 모습입니다 IE (IE6 및 IE8) 모두 Firefox 및 Chrome에서 작동합니다. 항목에 영어 문자 만 포함되어 있으면 올바르게 작동합니다.

해결 방법이 있습니까?

답변

1

응답 헤더가 올바르게 설정되었지만 그렇지 않습니다. 당신은 UTF-8 문서를 제공하고, 그래서해야한다 :

Content-Type: text/xml;charset=UTF-8

는 IE 말 그대로 콘텐츠 형식 헤더를 복용에 문제가있을 수 있습니다. 이 문제가 생겼다고 말할 수는 없지만 getElementsByTagName은 네임 스페이스와 작동하지 않기 때문에 사용하지 않습니다. 대신 selectSingleNode() 또는 selectNodes()을 사용할 수

// Using recursive descent (//) to find all item nodes 
var r = http.responseXML.documentElement.selectNodes("//item"); 

// Specifying the exact path to the item nodes 
var r = http.responseXML.documentElement.selectNodes("r/item"); 

의 XPath가 getElementsByTagName 것보다 훨씬 더 많은 전력을 제공합니다. 올바른 경로를 사용하여 if 문 중 하나 또는 두 개를 버릴 수도 있습니다. 전체 XPath 구문은 http://msdn.microsoft.com/en-us/library/ms256471(VS.85).aspx을 참조하십시오.

+3

또는 * ISO-8859-1 문서를 제공하고 있으며, bobince

+0

@bobince : 건강한 조언, 추가해 주셔서 감사합니다. –

관련 문제