2017-04-25 4 views
0

フォームからデータを送信しようとしていますが、コントローラから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()を使ってデータを送信する方法を知っていますが、ページを再読み込みしたくありません。フロントエンドに何かを送って何らかのアクションを起こしたいだけです。

ありがとうございます。

+0

サーバー側とクライアント側のレンダリングについて理解しています。ユースケースにはAJAXを使用することができます。おそらく、EJSをサーバーサイドレンダリングに使用しているため、フロントエンドでEJSを使用することはできません(戻り値をチェックするため)。 – Sangharsh

+0

あなたはそうです。私はクライアントに何かをレンダリングするためにEJSサーバー側を使用しています。 私が現在使用しているのは "res.view( 'test'、{result:0});私はEJSを使用して結果値を確認することができますが、ページを再読み込みしてその経験を乱してしまいます。 sails.jsコントローラが何をしているのか(EJSと一緒に)DBをチェックしてみてください。それは安全ではないでしょうか? – Devgom

答えて

0

あなたの最善の策は、インラインで実行するJavascriptスクリプトを含めることです。その後、あなたは結果が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の著作権の現在の年を示すことです。

関連する問題