|
//서버에 XML관련 데이터보내는 함수
function sendXMLFormData(argFormData)
{
xmlHttp.open("POST", "/comm/responseCodeXML.jsp", false);
xmlHttp.onreadystatechange = callBack;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(argFormData);
}
//서버응답 콜백함수
function callBack()
{
if(xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200)
{
var xmlDoc = xmlHttp.responseXML;
gradeListNode = xmlDoc.documentElement; //루트(codeList)노드
gradeNode = gradeListNode.firstChild; //codes노드
for(i=0; i<gradeListNode.childNodes.length; i++)
{
codeNode = gradeNode.firstChild; //첫번째노드
codeValue = codeNode.firstChild.nodeValue
nameNode = codeNode.nextSibling; //동일레벨에서의 다음노드
nameValue = nameNode.firstChild.nodeValue
makeSelectOption(codeValue, nameValue);
gradeNode = gradeNode.nextSibling; //다음 code노드
}
}
}
}
------------------------
익스플로러에서는
var xmlDoc = xmlHttp.responseXML;
이게 잘 들어와요
근데 크롬에서는 null이 뜨네요... 아시는분 계실까요..?
한가닥 희망이라도 걸어봅니다.
플리즈~~ ㅠ
아주 간단하게만 말씀드린것이고, ajax 사용을위한 XHR 객체를 얻어오는 방법은 크게
ie7이하 버전, ie8버전, 그외 브라우져 방식으로 나뉩니다. 헝글에 질문하지 마시고 구글링을 해보시면
정말 쉽게 나올 내용들이구요.. 요즘엔 자바스크립트 라이브러리가 대중화 되어있기때문에 XHR 객체를
저런식으로 직접 생성해서 가져다 쓰는 경우도 드뭅니다.
쉽게 ajax를 사용할수 있도록 도와주는 라이브러리로는 요즘 가장 주목받는 jQuery 가 있고. 그 외에 prototype.js 나
DWR 등이 있습니다. 이기회에 공부하여 적용해 보시면 아주 쉽게 ajax 사용이 가능합니다.
첫번쨰 소스 보단 이게 조금 낫겠습니다.
var request = null;
function createRequest(){
try{
request = new XMLHttpRequest(); // 요청객체를 XMLHttpRequest로 생성한다.
}catch(trymicrosoft){ //익스플로러 인가 여부를 판단해서 그에 맞는 객체를 생성한다.
try{
request = new ActiveXObject("Msxm12.XMLHTTP");
}catch(othermicrosoft){
try{
request=new ActiveXObject("Microsoft.XMLHTTP");
}catch(failed){
request = null;
}
}
}
if(request == null){
alert("Error creating request object!");
}
}
사실 이것보다도 더 자세히 정의하셔야 합니다.
제가 질문을 잘못 봤군요 객체 생성이 아니라 응답에 관한 질문이었네요
파이어폭스계열은 xml 파싱하는 방법이 틀립니다.
간단하게 해결하는 방법으로는.
01 |
var xmlDom = null ; |
02 |
var xmlHttp = null ; |
03 |
if (window.XMLHttpRequest) |
04 |
{ |
05 |
xmlHttp = new XMLHttpRequest(); |
06 |
} |
07 |
else |
08 |
{ |
09 |
xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP" ); |
10 |
} |
11 |
xmlhttp.open( "get" , filename, false ); |
12 |
xmlhttp.send( "" ); |
|
xmldom = xmlHttp.responseXML; |
혹은 아예 selectNode를 사용할수 있게 재정의 하는 방법이 있습니다(링크참조)
http://www.mungchung.com/xe/?mid=protip&listStyle=gallery&category=3007&document_srl=12694
구글에서 파폭 responseXML같은 식으로 검색해보시면 관련 자료가 많이 있습니다.
if
(window.XMLHttpRequest) {
// IE7+, Firefox, Chrome, Opera, Safari 에서 사용
xmlhttp=
new
XMLHttpRequest();
}
else
{
// IE6, IE5 에서 사용
xmlhttp=
new
ActiveXObject(
"Microsoft.XMLHTTP"
);
}