1. 2013. 7. 26. 11:36 개발자료/W3C
ajax 를 jQuery 등의 자바스크립트 프레임워크와 비슷한 방식의 함수형태로 불러옵니다
매번 새 개체를 생성해서 중복 실행도 문제 없구요
기본 함수만 사용 하였기 때문에 다른 오래된 브라우저에서는 작동 안할 수 있음

2013-10-29 : 새로 사용할 함수 https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
- 문자열,blob, 데이터타입, 폼 전송을 위한 간소화
2014-04-29 : Content-type -> Content-Type 변경

function ajax(url,param,xhr){if(!xhr)xhr=window;
  var x=new xhr.XMLHttpRequest();
  if(!param)param={};
  if(!param.data)param.data="";
  if(!param.type)param.type="GET";
  x.onreadystatechange=param.onload;
  x.onprogress=param.onprogress;
  if(param.onprogress)xr.upload.addEventListener("progress",p.progress,false);
  x.open(param.type,url,true);
  if(param.type.toUpperCase()=="POST")x.setRequestHeader("Content-Type",param.ContentType?param.ContentType:"application/x-www-form-urlencoded;charset=UTF-8");
  x.send(param.data);
}

2013-10-29 : 파이어폭스 send 함수 undefined 인식 못함 처리 추가

function ajax(u,p){
  var xr=new XMLHttpRequest(),pr=[];
  if(!p)p={};
  if(p.params){
    for(var key in p.params){
      pr.push(key+"="+p.params[key]);
    }
    pr=pr.join("&");
  }
  if(!pr){
    pr=
"";
  }

  if(!p.method)p.method="GET";
  if(p.method=="GET"){
    if(pr)u=[u,pr].join(u.indexOf("?")>-1?"&":"?");
  }
  xr.onreadystatechange=p.onload;
  xr.open(p.method,u,true);
  xr.setRequestHeader("Content-type","application/x-www-form-urlencoded; charset=UTF-8");
  xr.send(p.method=="POST"?pr:"");
}
ajax("url",{method:"POST",params:{a:1,b:2},
  onload:function(){
    if(this.readyState==4){
      alert(this.responseText);
      delete this;
    }
  }
});
Posted by Nightly Luna
,
® © Tanny Tales
/ rss