Page 1 of 1

XMLhttpRequest 문제입니다.

Posted: 2006 04 17 11:31 12
by oragi
이 코드의 어디가 잘못ㅤㄷㅚㅆ는지 알고 싶습니다.
responseText로는 잘 받아지는데, responseXML로는 ie에서 데이터가 받아지질 않고 자바스크립트 에러가 나네요.
책을 보고 짠 건데, 책의 소스도 작동을 안하니.. responseXML방식은 ie에선
지원을 안하나요?

Code: Select all

function init()
{
    var obj=document.getElementsByTagName("input")[0];
	obj.onclick=function()
	{
	  sendRequest(on_loaded1,'','GET','test.txt',true,true);	  
	}
	
	var obj01=document.getElementsByTagName("input")[1];
	obj01.onclick=function()
	{
	  sendRequest(on_loaded2,'','GET','index.xml',true,true);	  
	}
}
window.onload=init;


function sendRequest(call_back, data, method, url, param5, param6)
{
    var request=createHttpRequest();	
	
	request.onreadystatechange=function()
	{
		if (request.readyState==4)
	    {
	        call_back(request);
	    }
    }
	
	request.open(method, url);
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	request.send(data);
	
}

//콜백함수 수신시에 실행됩니다.
function on_loaded1(oj)
{
    var body=document.getElementsByTagName("body")[0];
	if (!document.getElementById("boxcontainer"))
	{
		var container=document.createElement("div");
		container.id="boxcontainer";
		container.style.background="yellow";
		body.appendChild(container);
	}
	var result=decodeURIComponent(oj.responseText);
	var textnode=document.createTextNode(result);
	container.appendChild(textnode);
}

function on_loaded2(oj)
{
    var body=document.getElementsByTagName("body")[0];
	if (!document.getElementById("container"))
	{
		var header=document.createElement("h1");
		body.appendChild(header);
		var container=document.createElement("ol");
		container.id="container";
		container.style.background="black";
		container.style.color="white";
		body.appendChild(container);
	}
	var result=oj.responseXML;
	
	if (header)
	{
	    headertext=result.getElementsByTagName("title")[0].firstChild.nodeValue;
		headertext=document.createTextNode(headertext);
		header.appendChild(headertext);
	}	
	var items=result.getElementsByTagName("item");
	for (v=0; v<items.length; v++)
	{
	    var titles=items[v].getElementsByTagName("title");
		for (i=0; i<titles.length; i++)
		{
			textnode=titles[i].firstChild.nodeValue;
			textnode=document.createTextNode(textnode);
			liobj=document.createElement("li");
			liobj.appendChild(textnode);
			container.appendChild(liobj); 
		}
	}
}


function createHttpRequest()
{
    if (window.ActiveXObject)
    {
        try
	    {
	        var oj= new ActiveXObject("Msxml.XMLHTTP");
	    }
	    catch (e)
	    {
	        try
		    {
		        var oj= new ActiveXObject("Microsoft.XMLHTTP");
		    }
		    catch (e2)
		    {
		        var oj= null;
		    }
	    }
    }
    else if (window.XMLHttpRequest)
    {
        var oj= new XMLHttpRequest();
    }
    else
    {
        var oj= null;
    }
	return oj;
}

Posted: 2006 04 17 13:04 26
by eouia
utf-8에 문제가 있거나 xml이 틀린 것 아닐까요?

Posted: 2006 04 17 14:03 05
by oragi
xml파일은 이글루스의 rss파일을 가져다 썼습니다.
js, html, xml, txt 파일 모두 utf-8 인코딩을 사용했습니다.
오페라9.0b 8225, 파폭 1.5.0.2 버전에선 잘 작동 합니다. js에러 콘솔에도
아무 문제 없습니다.
그런데 ie6에서만 xml 파싱시 js에러가 납니다.
무엇이 문제일까요?