본문 바로가기
Javascript/Node.js

Front end Javascript

by 모스키토끼 2019. 10. 4.

AJAX(Asynchronous Javascript And XML)

  • 비동기적 웹 서비스를 개발하기 위한 기법
  • 쉽게 말해서 페이지 이동 없이 서버에 요청을 보내고 응답을 받는 기술

AJAX 요청은 보통 jQuery나 axios 같은 라이브러리를 이용

밑에 코드는 자바스크립트가 기본으로 제공하는 방식으로 요청하는 방법이다.

프론트엔드에는 ES2015+ 코드를 사용할 수 없는 경우(IE)가 있으므로 ES5 사용

<script>
	var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function(){ //요청에 대한 콜백
    	if(xhr.readyState === xhr.DONE){ // 요청이 완료되고 응답을 기다림
        	if(xhr.status === 200 || xhr.status == 201){ // 응답코드가 200 or 201
            	console.log(xhr.responseText); // 서버에서 보내주는 값 콘솔에 출력
            } else{
            	console.error(xhr.responseText); // 메서드와 주소 설정
            }
        }
    };
    xhr.open('GET', ' 주소설정');
    xhr.send(); // 요청 전송
</script>

onreadystatechange 대신 onload와 onerror로 성공과 실패인 경우를 구별할 수 있다.

<script>
	var xhr = new XMLHttpRequest();
    xhr.onload = function(){ 
        if(xhr.status === 200 || xhr.status == 201){
            console.log(xhr.responseText);
        }     
    };
    xhr.onerror = function(){
    	console.error(xhr.responseText);
    };
    xhr.open('GET', ' 주소설정');
    xhr.send();
</script>

//서버로 데이터(JSON으로)를 같이 보내는 POST 요청의 경우 위 코드에서 3가지를 추가하면 된다.
//#1
	var data={
		name: 'kwon',
    	birth: 1995,
	};
    
//#2 (xhr.open 안에 주소로 json을 받는 주소로 설정 후)
	xhr.setRequestHeader('Content-Type', 'application/json');
//#3 (xhr.send() 대신)
	xhr.send(JSON.stringify(data));

 

FormData

  • HTML form 태그의 데이터를 동적으로 제어할 수 있는 기능, 주로 AJAX와 함께 사용된다. 
  • send 메서드에 데이터를 넣어서 보낸다.
<script>
	var formData = new FormData();
    formData.append('name', 'zerocho');
    formdata.append('item', 'orange');
    formData.appned('item', 'melon');
    formData.has('item');// true
    formData.has('money');// false
    formData.get('item');// orange
    formData.getAll('item');// ['orange', 'melon']
    formData.append('test', ['hi', 'zero']);
    formData.get('test'); //hi, zero
    formData.delete('test');
    formData.get('test');// null
    formData.set('item', 'apple');
    formData.getAll('item');// ['apple']
</script>

 

encodeURIComponent, decodeURIComponent

AJAX요청을 보낼 때 주소에 한글이 들어가는 경우 서버가 이해못하는 경우 존재. -> 인코딩 필요

보내는 쪽: encodeURIComponent 받는 쪽: decodeURIComponent

ex) xhr.open('GET', 'https://www.~~/api/search/' + encodeURIComponent('노드'));

'Javascript > Node.js' 카테고리의 다른 글

요청과 응답 이해하기(서버구현)  (0) 2019.10.19
버퍼와 스트림 이해하기  (0) 2019.10.17
파일 시스템 접근하기  (0) 2019.10.10
모듈 만들기  (0) 2019.10.10
알아두어야 할 Javascript  (0) 2019.10.03

댓글