안녕하세요
nodejs + express로 웹을 만들고 있습니다.
웹을 만들면서 몇가지 (제기준에서) 도저히 풀리지 않는 것들이 있습니다.
그중 하나가 post신호로 서버에 요청 , 응답 관련 입니다.
브라우저에서 어떠한 조건을 하게되면 예) 검색, 게시판 클릭 등등
server로 신호를 보내게 됩니다 (get, post중 post를 기준으로 하겠습니다)
소스로 보자면 (js)
var select_option
$.post('/best_select_option', function (data) {
select_option = data.sending;
});
post로 /best_select_option 신호를 server쪽에 주게 됩니다. 이것을 요청 이라고 하겠습니다.
그럼 server쪽에서는 /best_select_option를 받으면 best_select_option() 함수를 동작하게 정의했습니다.
server 소스
exports.best_select_option = function (req, res) {
var sending = [];
var obj = {sending: sending};
var notdata={notdata:'none'};
sending.push(notdata)
res.send(200, obj);
};
req는 요청인데 따로 변수값을 주면서 요청을 안했으므로 응답(res)만 사용하겠습니다
var notdata={notdata:'none'}; 를 정의하고 정의한 값을 sending 에 넣었습니다.
그리고 마지막에 res.send(200, obj); <-- 응답을 해줬습니다.
응답을 해주었기 때문에 js에선 그것을 받아야 합니다. 다시 js로 돌아가면
$.post('/best_select_option', function (data) {
select_option = data.sending; <---- 이부분이 응답을 받는 부분입니다.
alert("응답을 받았습니다. 다음 동작을 수행할수 있습니다.")
});
이렇게 응답을 select_option 변수안에 넣고 이것을 가지고 view로 뿌릴건지 혹은 조립을 할지는 개발자 마음대로 주무를수 있습니다.
근데 여기서 궁금한점이 있습니다. 바로 js에서 신호를 주는것이 아니라 html에서 <form>으로 줄때 입니다.
간단한 html 예제로 본다면
<form method="post" action="/best_select_option">
<button type="submit"></button>
</form>
이렇게 하면 위에 js와 다를것 없이 똑같은 신호를 주게 됩니다.
근데 여기서!! js에선 select_option = data.sending; 이렇게 응답을 받을순 있지만
html 에 <form>으로 보냈기 때문에 응답을 어떻게하면 받을지 고민이 됩니다.
원래 html에서 form은 요청만 할뿐이지 응답은 받을수 없는 것일까요?