'AJAX, DOM'를 이용하면 어때..?
라는 이야기를 하면..
전 울컥합니다.

솔직히..
JavaScript로 XML를 다루는 일이 쉬운일은 아니기 때문입니다.
물론 JSON를 이용하여 쉽게 좀더 싶게 접근할 수 있다고 하여도..
그렇다고 하여도..

돌아온 정보들을 화면에 보여주기 위해서
'document.createXXXNode' 등을 사용하기 시작하면..
조금씩 정신이 혼미해 집니다.

이쯤되면 'responseXML'이 아니라
'responseText'로 스트링정보를 받고 innerHTML를 이용하고 싶어집니다.

데이터의 보편성, 표준화등등 많은 이야기들이 있지만..
솔직히 아주 작은 일들은 'responseText - innerHTML' 조합이 더 어울린다고 생각합니다.

개인적으로 개인화홈을 만들어야할 일이 있어서.. 몇가지 테스트를 하면서
AHAH를 만났습니다.

Like Ajax, the XMLHTTP functionality is used to initiate a request, but the state-change of the request when the response is received is directed to a function which does not parse the response as XML using the Document Object Model, but rather inserts the response directly into the intended target element of the document using the non-standard innerHTML attribute of elements. The innerHTML is a read-/writeable attribute which is supported by the major web browsers (or user agents), and was first introduced in Microsoft's Internet Explorer.
- wikipedia -

기본적으로는 AJAX와 동일합니다. 하지만 돌아오는 값이 XML이 아닌 HTML형식입니다.
뭐.. innerHTML를 사용하는 것이지요..
그럼 이녀석이 'responseText - innerHTML' 조합과 다른 점이 무엇이냐..
뭐 눈으로 보기에는 다른점이 없습니다.
하지만.. 리턴되는 html안에 javascript구문이 포함되어 있다면 AHAH가 좀더 다루기가 좋습니다.

가령 리턴되는 값이
<script language='JavaScript'>
function test() {
 alert('test');
}
</script>
<div onclick="test()">click</div>

라고 한다면 참 처리하기가 애매합니다.
실제로 해보시면 'responseText - innerHTML' 조합에서는
'test() function이 선언되지 않았습니다.' 라는 에러를 만나게 됩니다.

네.. 자바스크립트도 동적으로 사용하고 싶은거지요..
물론 responseXML를 통해서 받은 정보를 이용해서 어찌 어찌 해결할 수도 있습니다.
하지만.. 영.. 하고 싶지 않은 일입니다.
만약 AHAH를 이용하신다면 아주 간단하게 해결하실 수 있습니다.

result = req.responseText;
XXX.innerHTML = result;
var j = document.createElement("div");
j.innerHTML = "_" + result + "_";
execJS(j);

execJS는 javascript함수입니다.
이곳에서 만나실 수 있습니다.

정말 정말 잘 작동해서.. 신기해 하고 있습니다. ^^
즐거운 만남이였습니다. ^^
샘플로 만든 사이틑 이곳에서 확인하실 수 있습니다.
(Firefox로 만들어서 IE에는 잘 돌아가지 않습니다. ㅠ.ㅠ;;  확인은 Firefox로 해주세요 ^^)


사용자 삽입 이미지


Posted by 달빛변신
TAG ,

댓글을 달아 주세요