prototype.js 의 Updater 로 데이터에 따라 다른 동작 구현하기


node.js + express 로 웹 사이트 구현 중입니다.

현재 좋아요 기능에 대해 구현 중인데요.

페이지가 새로고침 되지 않고 동작하도록 하기 위해 ajax 로 만져보며 알아보던 중,

아주 좋은 prototype.js 라는 프레임워크를 발견했습니다.

현재 이 prototype.js 로 결과 값까지 전달 받는 것은 구현 했습니다.

그런데, Request 는 결과 값에 따라 if 문으로 다른 동작을 하도록 하는게 가능하지만,

Updater 는 결과 값을 받아서 element 에 바로 적용해버리기 때문에 불가능하더라구요.

( evalSciprts 옵션이 있다는데 문법 에러가 나서 어떻게 사용하는지 모르겠습니다. )

new Ajax.Updater({success:'like-action'}, "/like", {
              method:'post',
              parameters : {"no" : "1"},

              onLoading: function() {
              },
              onSuccess  : function(returnValue) {

              },
              onFailure  : function() {

              },
              onComplete : function(returnValue) {

              }
          });

위 코드는 처리 성공시 id="like-action" 인 element에 서버에서 받은 결과값을 삽입하는 코드입니다.

서버에서 넘기는 데이터를 success: true, success: false 로 넘겨서 boolean 에 따라 성공하면 like 값을 1 증가시키고, 실패하면 alert 창을 띄우고 싶습니다.

ps. Request 에서는 값을 받을 수 있으니 하는 방법은 알겠으나 $("#").after() 같은 jquery 문법이 안 먹히더라구요.

  • 2016년 08월 24일에 작성됨
    웹 사이트 공부 중입니다. 많은 도움 주시면 좋아요.

조회수 101


1 답변


좋아요
0
싫어요
채택취소하기

Ajax.Request에 대한 공식 문서[1]를 보면 onSuccess로 응답을 처리할 수 있다고 나와있습니다.

new Ajax.Request('/your/url', {
  onSuccess: function(response) {
    // Handle the response content...
  }
});

onSuccess의 첫 인자는 Ajax.Response[2]로 전달된다고 명시되어있습니다[3].

만약 JSON 데이터를 받으시면서 Content-Type 응답 헤더가 application/json으로 되어있다면 responseJSON 속성을 사용하실 수 있다고 합니다.[4] 아닐 경우라면 responseText 속성을 사용하실 수 있을거같아요.[5]

  • 2016년 09월 17일에 작성됨
    해킹 대회와 웹 프로그래밍을 좋아함

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close