2017-04-25 11 views
0

폼에서 데이터를 전송하려고합니다. 컨트롤러에서 3 가지 가능성이 있습니다. 이미 존재하고 데이터가 잘못되어 성공적으로 생성되었습니다. . 그런 다음 프런트 엔드에 가치를 반환하고 싶습니다. 모든 것이 정상이며 {result : 0}을 반환한다고 가정 해 봅시다. 그런 다음 ejs를 사용하여 'result'값을 확인하고 0이면 (프런트 엔드) javascript 함수를 호출하려고합니다.Sails.js에서 백엔드에서 프론트 엔드로 값을 보내고 EJS로 확인

EJS :

<html> 
    <head> 
    <script src="functions.js"> 
    </head> 
    <body> 
    <form action="/test" method="POST"> 
     <input type="text" name="data" /> 
     <button>Send</button> 
    </form> 
    <div id="message"> 
     <% if (typeof result !== 'undefined' && result === 0){ %><script>showMessage();</script><% } %> 
    </div> 
    </body> 
</html> 

자바 (프론트 엔드)

function showMessage() { 
    document.getElementById('message').innerText = "sometext"; 
} 

자바 (백엔드)

module.exports = { 
    postData: function (req, res) { 
    Data.findOne({data: req.param('data')}).exec(function (err, data) { 
     if (err) { 
     return {result : 1}; 
     } 
     if (data) { 
     return {result: 2}; 
     } 
     if (!data) { 
     Data.create({data: req.param('data')}, function (err, data) { 
      if (err) { 
      return {result: 1}; 
      } 
      return {result: 0}; 
     }); 
     } 
    }); 
    } 
} 

res.view()를 사용하여 데이터를 보내는 방법을 알고 있지만, 페이지를 다시로드하고 싶지는 않습니다. 프론트 엔드에 뭔가를 보내고 몇 가지 조치를 취하고 싶습니다.

감사합니다.

+0

서버 쪽 및 클라이언트 쪽 렌더링 이해. 유스 케이스에 AJAX를 사용할 수 있습니다. 대부분 서버 측 렌더링을 위해 EJS를 사용하고 있으므로 반환 값을 확인하기 위해 프론트 엔드에서 EJS를 사용할 수 없습니다. – Sangharsh

+0

네 말이 맞아. 나는 EJS 서버 측을 사용하여 클라이언트에게 무언가를 렌더링한다. 현재 사용하고있는 것은 "res.view ('test', {result : 0})를 반환합니다." 작동하지 않으면 EJS를 사용하여 결과 값을 확인할 수 있지만 페이지를 다시로드하면 경험이 방해가됩니다. sails.js 컨트롤러가 수행하고있는 기능 (EJS 포함)을 사용할 수 있습니까 (DB와 그 모든 것을 확인하십시오)? 그것은 안전하지 않을까요? – Devgom

답변

0

가장 좋은 방법은 인라인으로 실행할 자바 스크립트를 포함시키는 것입니다. 그런 다음 그 결과 당신은 백엔드 등의 변수를 저장할 수 0

<% if (result == 0) { %> 
    <script type="text/javascript"> 
     /* Your Function Here */ 
    </script> 
<% } %> 
+0

내가 이미 가지고있는 문제는 컨트롤러에서 데이터를 보내는 방법 중 하나만 알고 res.view()를 사용하고 있고 싶지 않다는 것입니다. – Devgom

+0

res.json()을 사용하여 컨트롤러에서 데이터를 반환 할 수 있습니다.이 경우 API를 구현해야합니다. – Royalist

0

동일한 경우는 스크립트를 포함하는 조건부 EJS 절을 사용할 수 있습니다. 프론트 엔드 호출 <%- someVariable %>

또는 백엔드 등의 개체로 저장에서 someVariable = "some value" 그런

.

vehicle.car = { 
    manufacturer: 'Holden', 
    make: 'Colorado', 
    year: '2018' 
} 

THEN은 프론트 엔드에서 개체 모델을 호출합니다.

<p>Your <%- vehicle.car.year %> <%- vehicle.car.manufacturer %> <%- vehicle.car.make %>... 

유스 케이스의 예는 바닥 글 페이지 요청을 지속 partial의 저작권 현재 연도를 표시하는 것입니다.