본문 바로가기

기타

Ajax에서 상태 변화시 호출되는 함수를 함수명으로 지정하기.

XMLHttpRequest 객체의 인스턴스의 onreadystatechange 값에 함수명을 기입함으로써,
상태 변화시 호출되는 함수를 지정하였습니다.
이렇게 할 경우, 호출되는 함수는 1개뿐이며, 만약 이 함수를 바꿔주고 싶으면...
어떻게 해야할까요.

함수명을 바로 기입하면 될까요? 안됩니다.

Ajax 호출 흐름과 기본적인 준비 운동 2/2 에서 처럼 callRequest() 함수를 만들어서 호출시 활용하는데,
만약 이 callRequest 함수를 보다 범용적으로~~~ ^^
바꾸고자 한다면, 어떻게?? open 함수도 맘대로 셋팅할 수 있고.. 하도록요.
그러면, 다음과 같이 eval함수를 이용할 경우 편리합니다.

그럼 Ajax 호출 흐름과 기본적인 준비 운동 2/2 에 있는 callRequest 함수를 개량해보도록 하죠.

 function callRequest(type, url, fName) {
   
    getXmlHttpRequestObject();

    xmlHttp.onreadystatechange = eval(fName);
    xmlHttp.open(type, url, true);
    xmlHttp.send(null);
 }

이렇게 해주시면 됩니다.
그럼 fName으로 넘어오는 함수명으로 지정된 함수가 readyState 값 변화시 호출되도록 할 수 있습니다.
의외로 쓸만한데가 많더군요..

반응형