如何在React

时间:2017-06-30 18:18:45

标签: json node.js reactjs superagent

我将我的反应应用程序的状态发送到服务器(与前端服务器不同)。

        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的情况下发送我的状态,但我无能为力在我的后端需要的身体。我也尝试了很多其他的东西,但无法让它以正确的方式运作。非常感谢你!

1 个答案:

答案 0 :(得分: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
    })

在此server.js中包含正文解析器,它负责您的请求正文并解析您的有效负载对象。