在Sails.js中从后端发送值到前端并使用EJS进行检查

时间:2017-04-25 08:29:19

标签: javascript sails.js frontend backend ejs

我尝试从表单提交数据,然后从控制器中有3种可能性,它已经存在,数据错误并且已成功创建。然后我想将一个值返回给前端,让我们说一切正常,然后我返回{result:0}。 然后使用ejs我将检查'结果'的值。如果它是0我想调用(前端)javascript函数。

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>

Javascript (前端)

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

Javascript (后端)

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()发送数据,但我不想再次重新加载页面我只想向前端发送内容并采取一些措施。

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

您最好的选择是包含要内联执行的Javascript脚本。然后,如果结果等于0,则可以使用条件EJS子句来包含脚本。

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

答案 1 :(得分:0)

您可以在后端存储变量,例如。 someVariable = "some value"

然后在你的前端致电<%- someVariable %>

或者将其保存为后端中的对象,例如。

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

然后在前端调用对象模型,例如。

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

用例示例是显示页脚请求的页脚partial的当前版权年份。