フォームからデータを送信しようとしていますが、コントローラから3つの可能性があります。既に存在します。データが正しくありません。 。フロントエンドに価値を返そうとしていますが、すべてがOKで、私は{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>
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()を使ってデータを送信する方法を知っていますが、ページを再読み込みしたくありません。フロントエンドに何かを送って何らかのアクションを起こしたいだけです。
ありがとうございます。
サーバー側とクライアント側のレンダリングについて理解しています。ユースケースにはAJAXを使用することができます。おそらく、EJSをサーバーサイドレンダリングに使用しているため、フロントエンドでEJSを使用することはできません(戻り値をチェックするため)。 – Sangharsh
あなたはそうです。私はクライアントに何かをレンダリングするためにEJSサーバー側を使用しています。 私が現在使用しているのは "res.view( 'test'、{result:0});私はEJSを使用して結果値を確認することができますが、ページを再読み込みしてその経験を乱してしまいます。 sails.jsコントローラが何をしているのか(EJSと一緒に)DBをチェックしてみてください。それは安全ではないでしょうか? – Devgom