2017-07-21 12 views
0

私はnode.jsを初めて使用しています。私はexpress/node.jsのapiとejsテンプレートを使って接続しています。私はいくつかの情報をブラウザからapiにプッシュしたかったのです。現時点では、私はコマンドラインからプッシュすることができます。私はnode.jsファイルをブラウザから直接呼び出すことはできないと理解していますが、node.jsファイルを呼び出して実行することができればフォーム上でsubmitをクリックするのは困惑しています...モジュール、ルート、または推奨する他のソリューション私は助けに感謝します。クリックイベントからnode.jsファイルを実行する

+0

下記の[私の回答](https://stackoverflow.com/questions/45241464/running-a-node-js-file-from-a-click-event/45243173#45243173)は役に立ちましたか?コメントはありますか? – rsp

答えて

0

これは奇妙な質問です。ノードアプリケーションは、HTTPリクエストまたはWebSocket接続をリッスンする必要があります(WebSocketが利用できないフォールバックを提供できるSocket.ioなどの抽象化を使用する可能性があります)。ソケットで送信されたリクエストまたはメッセージを処理する必要があります。これらのハンドラーでは、必要なものを何でも行うことができます。これは単にクライアント/サーバーアーキテクチャの基本原則です。

あなたのニーズに最も適した技術を選択するには、リアルタイムでの通信が必要かどうか、通信が必要な頻度、必要に応じてどれだけのデータを渡す必要があるかサーバーまたはクライアントなどで開始されたデータの配信をサポートすることができます。

質問に答えるには、フォームを送信してノードアプリケーションでコードを実行できるようにします。これは、フォームがどのように動作するかです。つまり、クエリー文字列内のデータを使ってGETしたり、本体にデータを格納したPOST(どちらもNodeで簡単に読み取ることができます)、そしてバックエンドのハンドラが要求を処理します。応答を必要とし、送信します。

expressbody-parserを使用して、この単純な例を考えてみましょう:

const app = require('express')(); 
const { urlencoded } = require('body-parser'); 

app.use(urlencoded({ extended: true })); 

app.use('/', (req, res) => { 
    const { method, path } = req; 
    const { x } = req.body; 
    console.log(`Client request: ${method} ${path} (x = ${x})`); 
    res.end(` 
    <!doctype html> 
    <html> 
     <head> 
     <title>Form handling example</title> 
     </head> 
     <body> 
     <p>x = ${x}</p> 
     <form method="POST" action="/"> 
      Enter x: <input type="text" name="x"> 
      <input type="submit" value="Submit"> 
     </form> 
     </body> 
    </html> 
    `); 
}); 

app.listen(4447,() => console.log('Listening on http://localhost:4447/')); 

新しいディレクトリを作成し、server.jsとしてこのコードを保存し、実行します。

npm init -y 
npm install express body-parser -S 
node server.js 

、ブラウザで印刷されたURLにアクセスします。

[送信]ボタンをクリックすると、ノードアプリケーションで何が起こるかがわかります。

+0

ありがとうございます。 – Lily

0

ノードアプリケーションには、GETリクエストまたはPOSTリクエストを受け入れるルートが設定されています。次に、いくつかのロジックを行い、レスポンスにいくつかのデータを返します。

あなたのWebページは、AJAX呼び出しを介してGETまたはPOSTとしてノードルートにフォームを送信し、同様にAJAX呼び出しから応答を受け取ります。次に、あなたはこの応答を受け取り、Webページでローカルに使用することができます。

+0

ありがとうございます。 – Lily

関連する問題