2017-04-01 15 views
0

私は全く新しいnode.jsを公開しています。 私はクライアントのページでjavascriptを使っていくつかの計算を行っており、生成した数値の配列をnode.jsサーバーアプリケーションに送信したいと思います。フォームデータを送信しなければならないときは、フォームアクションを自分のルートに使用しました。今私は完全に失われてどこから始めるべきか分からない。私のルートにはどのようなコードを書くべきですか?クライアントアプリケーションからjs変数または配列を渡す方法は?クライアントからExpress apiに変数を渡す方法

+1

エクスプレスアプリでPOSTメソッドルートを作成し、jqueryを使用してajax呼び出しを使用してクライアントページからそのPOST APIをヒットすることができます。 –

+0

私は非常に簡単なサンプルを教えていただけますか?私はそれを検索しようとしましたが、すべての例はjsオブジェクトと非常に複雑で、私が探していたものと全く同じではありません –

+0

関連:[Express jsフォームデータ](https://stackoverflow.com/questions/24800511/express-js -form-data)。また、['req.body'](http://expressjs.com/en/4x/api.html#req.body)のドキュメントを参照してください。 –

答えて

1

サーバー上で実行されているExpressアプリケーションにデータの配列を送信するには、最も簡単な方法はJSONオブジェクトとして送信することです。 jQueryのを使用して簡単な例を以下に示す:

クライアントコード:

var your_calculated_array = []; // Set your calculated array here 
    $.ajax({ 
     type: 'POST', 
     url: 'YOUR_EXPRESS_ENDPOINT', 
     data: { your_data: your_calculated_data }, 
     dataType: 'json', 
     success: function (data) { 
     // Handle the response here 
     } 
    }); 

サーバーサイドコード(JSON体を解析するためにボディパーサーミドルウェアを使用して):

..... 

var bodyParser = require('body-parser') 
app.use(bodyParser.json()); 

app.post(YOUR_EXPRESS_ENDPOINT, function(req, res) { 
    var calculated_data = req.body.your_data 
    // ... 
}) 

..... 
+0

それはサーバーの要求を行うのに役立ちますが、私はそれをテストしようとしていますが、データをしても、クライアントの{your_data: "test"}はサーバー とconsole.log(req.body.your_data)エンドポイントコンソールは常に定義されていません –

1

簡単な例

app.js

var express = require('express') 
var app = express() 

app.set('view engine', 'pug') 

app.get('/', function (req, res) { 
    res.render('index') 
}) 

app.post('/example_route', function (req, res) { 
    res.send({'msg': 'Hello World!'}) 
}) 

app.listen(3000, function() { 
    console.log('Example app listening on port 3000!') 
}) 

ビュー/ index.pug

doctype html 
html 
    head 
    title= 'HomePage' 
    script(src='https://code.jquery.com/jquery-3.2.1.min.js') 
    body 
    button(onclick='$.post("http://localhost:3000/example_route", function(data) {alert(data.msg);})') Click me! 

このホームページは、サーバーにPOST要求を行い、CDNとのonclickイベントからjqueryのを含んでいます。

+0

私はこれを試しましたが、このエラーが発生します:XMLHttpRequestはhttp:// localhost:3000/example-routeをロードできません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。したがって、原点「ヌル」はアクセスが許可されません。 –

+0

これは、POST要求がデータを送信しているのと同じサイトから来ている必要があることを意味します。ブラウザのアドレスバーで、127.0.0.1:3000またはlocalhost:3000にアクセスしていますか?それが何であれ、ブラウザのアドレスバーとonclickリスナーコードで同じでなければなりません。 –

+0

私はクライアントアプリケーションをどこにでもホスティングしていませんが、同じサーバー上で実行することなくこれを行うことは可能ですか? –

関連する問題