티스토리 뷰
■ 프론트엔드 ■/AJAX
02. XMLHttpRequest 함수화 - sendRequest(url, param, callback, method, asyncBool)
serpiko 2014. 8. 28. 17:31
<!DOCTYPE HTML>
<html lang="ko">
<head>
<title> NewDocument </title>
<meta charset="utf-8">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<script>
var xhr = null;
//url경로, 전달할 파라메터, 완료시콜백함수, get/post, 동기화여부
function sendRequest(url, param, callback, method, asyncBool)
{
if(window.ActiveXObject)
xhr = new ActiveXObject("Microsoft.XMLHTTP");
else
xhr = new XMLHttpRequest();
method = (method.toLowerCase() == "get") ? "GET" : "POST";
param = ( param == null || param == '' ) ? null : param;
if(method == "GET" && param != null) url = url + "?" + param;
xhr.open(method, url, asyncBool);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = callback;
xhr.send( (method == "POST")? param : null );
}
function res()
{
if(xhr.readyState == 4 && xhr.status == 200)
{
/***************************************
* ※데이터 주의사항.
*
* 1. 문자열일 경우 직접 사용 가능.
* var myData = xhr.responseText; //serpiko
*
* 2. 오브젝트일 경우 eval로 값으로 변환해야 하는데 이때 '()'로 감싸준다.
* 데이터 형식 : {'label':'serpiko', 'value':'99999'}
* var myData = eval( '('+ xhr.resonseText + ')' ); //
* myData.label
* myData.value
*
* 3. 반복된 오브젝트({~~},{~~}... )일 경우 eval로 값으로 변환해야 하는데 이때 '[]'로 감싸준다.
* 데이터 형식 : {'label':'serpiko', 'value':'99999'}, {'label':'serpiko', 'value':'8888'}
* var myData = eval( '['+ xhr.resonseText + ']' );
* myData[0].label
* myData[1].value
***************************************/
var obj = eval( xhr.responseText );
}else{
console.log( url + '의 ' + param + '로드를 실패했습니다.' );
}
}
var param = 'Act=test&dateParse=20070421';
sendRequest('syslog_data.php', param, res, 'get', false);
</script>
</body>
</html>
'■ 프론트엔드 ■ > AJAX' 카테고리의 다른 글
| 03. 제이쿼리 ajax로 xml 파싱 (0) | 2014.08.28 |
|---|---|
| 03. 제이쿼리 load → JSON데이터 (0) | 2014.08.28 |
| 01. XMLHttpRequest 함수화 기본형 (0) | 2014.08.28 |
| XMLHttpRequest (0) | 2014.08.28 |
| HTTP 상태 코드(status) (0) | 2014.08.28 |
댓글