簡體   English   中英

Node.js從Express with Socket.io和Http讀取post數據

[英]Node.js read post data from Express with Socket.io and Http

我有一個帶有Express和Socket.io的node.js服務器。 在Socket.io文檔中,我找到了主機服務器的這個示例代碼。

我的問題現在是下一個:我無法從請求中讀取Post數據。

有一個要求:

            $.ajax({
                type: "POST",
                url: "http://127.0.0.1:4444/login",
                data: {
                    da: 'a'  
                },
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(data){
                    console.log(data);

                },
                failure: function(errMsg) {
                    console.log(data);
                }
            });

這是服務器:

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(4444);

var database = require('./database.js');
database.methods.connect(); 


// Add headers
app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
    res.setHeader('Access-Control-Allow-Credentials', true);
    next();
});

app.post('/login', function(req, res) {
    console.log(req.body);
});

我嘗試了很多想法。 例如:bodyParser.json(),bodyParser.urlencoded

但是這個快遞是用require(“http”)運行的;

我如何從請求中讀取正文? 我希望有一個人可以幫助我! 謝謝

您需要添加Express body-parser中間件,如下所示:

var express = require('express')
var bodyParser = require('body-parser')

var app = express()
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(4444);

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

// parse application/json 
app.use(bodyParser.json())

app.use(function (req, res) {
  res.setHeader('Content-Type', 'text/plain')
  res.write('you posted:\n')
  res.end(JSON.stringify(req.body, null, 2))
})

你必須使用body-parser來表達。 文檔在這里

var bodyParser = require('body-parser')
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }))

chrome.exe --user-data-dir =“C:/ Chrome dev session”--disable-web-security

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM