2017-06-30 40 views
0

私のリアクションアプリの状態をサーバーに送信しています(フロントエンドサーバーと同じではありません)。ReactでSuperAgentを使用してJSONデータを正しく送信する方法

 request.post('http://localhost:8000/guide') 
     .send(JSON.stringify(this.state)) 
     .end((err, resp) => { 
      if (err) console.log('Error: ' + err); 
      else { 
       console.log(resp.text); 
      } 
     }); 

問題は、受信側(バックエンドサーバ)であり、私はreq.bodyで次のように取得しています:

{ '{"mainColor":"#F44336","accentColor":"#FFC107","appName":"sasa"}': '' } 

私は問題を回避することができますが、私は大好きですこれを行うには正しい方法を見つけて、私はJSON.stringifyせずに私の状態を送信しようとしましたが、私はバックエンドでreqの本体に何もできません。私は他にもいくつかのことを試みましたが、正しい方法で働くことができませんでした。どうもありがとうございました!このserver.jsで

答えて

0

私の提案、

// http request code... use XMLHttpRequest instead of SuperAgent 

    let http = new XMLHttpRequest(); 
    http.open('POST','http://localhost:8080/guide'); 
    http.onload =()=>{ 
     if (http.status >=200 && http.status <300){ 
      console.log(http.responseText); 
     } 
    }; 
    let state = this.state; 
    http.setRequestHeader("Content-Type", "application/json"); 
    http.send(JSON.stringify(state)); // send state as payload 

    // server.js in nodejs 
    var express = require('express'); 
    var bodyParser = require('body-parser'); 

    var app = express(); 

    app.use(bodyParser.json({limit: '100mb'})); 

    app.use('/guide', function(req, res){ 
     var payload = req.body; // payload varibale has your state object 
    }) 

は、あなたのリクエストボディの責任を取り、あなたのペイロード・オブジェクトを解析ボディパーサーを、含まれています。

+0

ありがとうございました、問題はボディパーサーであり、私は正しい方法で使用していませんでした。とても有難い! –

関連する問題