2017-07-11 16 views
1

私はコードブラウザアプリケーションで、html5とjavascriptを使用しています。javascript/htmlページからExpress NodeJSサーバーにデータを送信

アーキテクチャは、次のいずれかです。携帯電話のアプリケーションは、Firebirdのデータベースを要求するサーバーに何かを要求します。データベースは、電話アプリケーション(html5/javascript内)に尋ねられたデータを提供するサーバーに応答します。

私はJSONとの電話に、サーバからのデータを送信することができました、と私はそれがサーバに電話アプリからいくつかのデータを送信すると同じだろうと思いました。しかし、私はどのように電話からそのようなサーバーにデータを送信するか分かりません。私は可能な限り問題を単純化しようとしました。

var send = { "name":"John", "age":30, "car":null }; 
var sendString = JSON.stringify(send); 
alert(sendString); 
xhttp.send(sendString); 

(アラートが私お送りします::{ "名": "ジョン"、 "年齢":30、 "車" を:ヌル})

したがって、次のJavaScriptコードを考慮し

ノードJSサーバーでどのように取得できますか?現時点では、私のコードは、次のいずれかです。

app.post('/createEmp', function(req, res){ 
    //res.send(req.body.name); 
    //console.log('test :' + req.app.post('name')); 
    //console.log(req); 
    console.log('createEmp'); 
    if(typeof(req) == 'undefined') {console.log('Y a rien'); } 
    else { 
      console.log('La req n est pas vide, son type est : ' + typeof req); 
    }  
    console.log(typeof req.query.name); 
}); 

あなたは、私はすでに(もっとあります)しようとしたか知っているように、私はコメントを聞かせて... たびに、REQの種類が定義されるか、またはそれはオブジェクトですが、円形であるため解析できないため、電話アプリケーションから送信されたデータであるかどうかはわかりません。

だからあなたは私のアドバイスの作品、私は、サーバーへの電話からデータを送ることができる方法についての解説をお願いできますか? (私は、サーバーで解析されるURLにデータを表示しようとする可能性がありますが、データを保護するためにそうする必要はありません...)。

助けていただけたら幸いです!どうもありがとうございました !

(PS:私はすでにどこでもいくつかの答えを探してきたが、何もまだ働いていない)

+1

私はあなたがsocket.ioを使うべきだと思います。したがって、電話機とサーバーの間にソケットを作成することができます。それから、ソケットを使ってデータを送信してください。パフォーマンスが向上します。 – Zaphiel

+0

あなたの答え、Zaphielありがとう、私はこれについてのいくつかの調査を行います:) –

+0

あなたは電話とサーバー間のWebSocket接続を使用することができます。 –

答えて

0

reqリクエストごとに付属しているものの完全なオブジェクトです。あなたはあなたの要求の体を取得する必要があります。これはあなたを助けるかもしれません:How to retrieve POST query parameters?

しかし、クライアント側のJavaScriptがあまりないので、質問してください:これをPOSTしますか?

はここのようにそれを行う試してみてください。https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send ...そしてあなたがxhr.setRequestHeader(「Content-Typeの」、「アプリケーション/ JSONを」)を使用する場合は、おそらくこれを文字列化する必要はありません。クライアント側の

+0

ありがとうございます。私はそれを試したが、私が尋ねるときに:console.log(req.body。名);それでも、 'undefined'を返します:/。 –

+0

JSON.stringify(req.body)を表示するように頼んだとき、空のボディ{{}を返します。 –

+0

上記のMDNのコンテンツタイプヘッダとPOSTメソッドに関する情報を追加しました。これを試してみてください。 – pkolawa

1

まず第一に、これを行う。..

var send = { "name":"John", "age":30, "car":null }; 
var sendString = JSON.stringify(send); 
alert(sendString); 
xhttp.send(send); 

次に、サーバ側で、あなたの要求オブジェクトで身体パラメータを移植しますミドルウェアを追加する必要があります。

var express=require("express"); 
var bodyParser=require("body-parser"); 

var app=express(); 

// Process application/x-www-form-urlencoded 
app.use(bodyParser.urlencoded({extended: true})) 

// Process application/json 
app.use(bodyParser.json()); 

app.post('/createEmp', function(req, res){ 
//now req.body will be populated with the object you sent 
console.log(req.body.name); //prints john 
}); 
関連する問題