brunch

You can make anything
by writing

C.S.Lewis

by 정지연 Jun 07. 2016

Ajax 알아보기



Ajax 란 ?   브라우저 위에서 다양한 표현을 가능하게 하는 기술, 비동기적


비동기적 : 어떠한 기능을 실행했을 때, 데이터를 불러오는 동안 다른 기능 실행 가능

동기적    : 어떠한 기능을 실행했을 때, 데이터를 불러오는 동안 다른 기능 실행 불가능



쉽게 말해, DB를 실제로 처리하기 전에 마치 DB를 처리한 것 처럼 사용자에게 미리 보여주는 것이다.


DB 는 보통 화면이 reload (새로고침) 된 후에 처리된다.

하지만 사용자들은

자신이 실행한 기능이 실시간으로, 빠르게 실행이 되는 것을 내 눈으로 직접 보고 싶어할 것이다.

그러한 사용자들을 위해 구현하는 일종의 속임수(?) 이다.

실제로 DB 처리가 빠르게 되는 것은 아니다..ㅎ




에를 들어, 이런 식으로 화면에 상품이 나열되어 있다.




이 때, 사용자는 상품의 정보를 직접 수정하기를 원할 수도 있다.

그래서 상품 수정 버튼을 클릭하면,




수정 창이 뜨게 된다.




창 안에 본인이 원하는 상품의 정보 (이 예시에선 상품의 이름) 를 입력한 후, 수정 버튼을 클릭하면




새로고침 없이 바로 이름이 수정이 된다.




이 때, DB에 담긴 상품의 정보 (이 예시에선 상품의 이름) 는 아직 변경되지 않았다.

하지만 사용자에게 변경이 된 것처럼 미리 보여줌으로써, 기능이 바로 실행이 된 것처럼 느끼게 해준다.







예시 하나를 더 봐보자.

똑같은 웹 사이트 상에서 이번엔 상품을 정렬하고자 한다.





상단에 있는 '낮은 가격순' 버튼을 클릭하면 다음과 같이 상품이 낮은 가격의 상품부터 정렬이 되어 나타난다.

이 또한 ajax를 이용해 새로고침 없이 구현한 것이다.






이제 실제 코드를 보며 익혀보자.

코드 예시는 2번째 '정렬 기능' 의 예시이다.




1. 우선 정렬을 위해 Controller의 action을 하나 생성해준다.



sort 라는 action 안에 상품들을 가격순으로 정렬한 값을 다음과 같이 products_price 에 담았다.

그 다음, ajax를 사용하기 위해 json 형태로 값 (상품들을 가격순으로 정렬한 값) 을 render 해 줄 것이다.



만약, json 형태로 넘겨줄 값이 여러개 인 경우에는


다음과 같이 작성해주면 된다.





2. 그 다음 그 action 을 사용하기 위해 routing 을 해준다.



product 컨트롤러의 sort 액션은 /sort 라는 route 를 통해 데이터를 주고 받는다.






3. 이제 ajax를 구현할 것이다.



일반적인 ajax 문법은 다음과 같다.



url은 ajax를 통해 데이터를 주고 받을 url 을 의미한다.


type 은 데이터를 처리할 타입 (GET / POST / UPDATE / DELETE) 을 의미한다.


data는 조금 헷갈릴 수가 있는데,

B라는 값을 받아와서 A 데이터에 저장하는 것이다.

이 예시에서는, sort_price라는 함수를 불러올 때 B 값으로 "ok" 를 지정해 주었다.

ok 값은 ajax를 통해 A 라는 params 에 담기게 된다.

params 는 controller에서 사용할 수가 있다.



1번의 코드를 보면

if params[:A] == "ok"

라는 코드가 있다.

이 것은 즉, 'A라는 params의 값이 ok 라면'

이라는 의미이다.

이 예시에서는 A 값이 ok가 맞기 때문에 controller 안의 if 문이 실행될 것이다.



success:function(product) {} 는 데이터 처리가 성공했을 때 실행할 코드를 적는 block {} 이다.

이 때 function 안에 productcontroller에서 json 형태로 render 해준 값이다.

즉, 이 예시에서는 @products_price 값이 json 형태로 넘어와서

product에 @products_price 값을 넘겨주게 된다.






이와 같이 Controller, router, View, Model 을 통해 ajax가 구현이 된다.

이와 같은 MVC 개념을 익혀둔다면, ajax 이해가 좀 더 쉬울 것이다.

데이터 수정, 삭제, 생성과 같은 데이터 처리를 위해 자주 쓰이는 기술이기 때문에 실제 코드 작성을 통해 자주 익혀보아야 겠다.



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari