본문 바로가기
Javascript/Node.js

node.js 라우터에서 post를 쓸때 주의할점

by progrpsk 2017. 4. 13.

삽질을 하고 올려본다.

node.js에서 로그인 값을 post 방식으로 전달하고 통신이 완료 되면 메인 페이지로 돌아가게 하려고 했다.

그래서 res.redirect('/')라는 함수를 주구장창 사용했지만 반응이 없었다..

벼래별 해답을 찾으며 방법을 찾는데 1시간이 걸렸다.


결론은 ajax 통신에서는 res.redirect('/') 함수가 먹히지 않는다.

ajax의 post 통신에 있어서 res는 클라이언트로 그 값을 전달해주는 역할만 한다.

ajax의 success 함수가 장식용으로만 있는것이 아니었다.

ajax는 요청한 값에 의해 응답을 확실히 받았을때 다음 작업을 할 수 있었다.

고로 내가 로그인 완료후에 다른 페이지로 접근하려면 ajax의 success 함수에 그 기능을 만들어줘야 했다.

그래서 node.js에 아래와 같이 세팅해주고


router.post('/sign_in', function(req, res, next) {

  console.log(req.body);

  var status = {

    "status": 200,

    "message": 'login success'

  }

  res.end(JSON.stringify(status));

});;


클라이언트에서는 아래와 같이 설정해주었다.


$.ajax({

  type: "POST",

  url: '/users/sign_in',

  data: {

    name: $(usernameSI).val(),

    password: $(passwordSI).val()

  },

  success: function(data) {

    var data = JSON.parse(data);

    if(data.status == '200'){

      window.location.replace("../");

    }

  }

});


결과적으로 클라이언트에서는 서버에서의 데이터가 제대로 된 것인지 상태코드로 전달받고,

그후 페이지 리로드를 하게 된다.


댓글