Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Express4.0将一些文本从客户端传回服务器端?_Javascript_Node.js_Post_Express - Fatal编程技术网

Javascript 如何使用Express4.0将一些文本从客户端传回服务器端?

Javascript 如何使用Express4.0将一些文本从客户端传回服务器端?,javascript,node.js,post,express,Javascript,Node.js,Post,Express,也有类似的问题,但我找不到这个问题的确切答案 我需要不时地将一些文本从客户端推回到服务器端。用户端不希望从服务器端得到答案。我想我会使用POST,如下所示: var request = new XMLHttpRequest(); request.open('POST', MY_URL, true); request.setRequestHeader('Content-Type', 'text/html;charset=utf-8'); request.send(myMsg); function

也有类似的问题,但我找不到这个问题的确切答案

我需要不时地将一些文本从客户端推回到服务器端。用户端不希望从服务器端得到答案。我想我会使用POST,如下所示:

var request = new XMLHttpRequest();
request.open('POST', MY_URL, true);
request.setRequestHeader('Content-Type', 'text/html;charset=utf-8');
request.send(myMsg);
function myFunction(req, res) {

    console.log("Reached myFunction, reqBody is: '" + req.body + "'");
    res.end();

}    
var express = require('express');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
...
self.app = express();
...
self.app.use(bodyParser());
self.app.use(cookieParser());
从Chrome上,我可以看到收割台和有效载荷是正确的。状态是200 OK

在服务器端,我尝试检索正文内容,如下所示:

var request = new XMLHttpRequest();
request.open('POST', MY_URL, true);
request.setRequestHeader('Content-Type', 'text/html;charset=utf-8');
request.send(myMsg);
function myFunction(req, res) {

    console.log("Reached myFunction, reqBody is: '" + req.body + "'");
    res.end();

}    
var express = require('express');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
...
self.app = express();
...
self.app.use(bodyParser());
self.app.use(cookieParser());
但我得到:

Reached myFunction, reqBody is: 'undefined'
我做错了什么?我应该使用“application/json”;charset=utf-8'而不是JSON

更新

我已经做了更多的研究,服务器端的req对象没有body属性。但是,标题很好

本人通过以下方式开始申请:

var request = new XMLHttpRequest();
request.open('POST', MY_URL, true);
request.setRequestHeader('Content-Type', 'text/html;charset=utf-8');
request.send(myMsg);
function myFunction(req, res) {

    console.log("Reached myFunction, reqBody is: '" + req.body + "'");
    res.end();

}    
var express = require('express');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
...
self.app = express();
...
self.app.use(bodyParser());
self.app.use(cookieParser());
有什么想法吗?

试试:

request.setRequestHeader('Content-Type', "application/x-www-form-urlencoded");
这可能会有所帮助。

试试:

request.setRequestHeader('Content-Type', "application/x-www-form-urlencoded");
这可能会有所帮助。

在使用主体解析器中间件时,内容类型匹配非常重要。在本例中,您指定了text/html,因此应该使用中间件。此外,您需要指定text/html作为类型。因此,完整的示例如下所示:

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

var app = express();

app.use(bodyParser.text({
    type: "text/html"
}));

app.post("/test", function(req, res) {
    console.log(req.body);
    res.end();
});

app.listen(3000);
您还可以使用通配符,例如type:text/*作为bodyParser.text的选项

当我使用您的示例运行此程序时,当我点击/test时,我会看到控制台的hi输出。

当使用主体解析器中间件时,内容类型匹配非常重要。在本例中,您指定了text/html,因此应该使用中间件。此外,您需要指定text/html作为类型。因此,完整的示例如下所示:

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

var app = express();

app.use(bodyParser.text({
    type: "text/html"
}));

app.post("/test", function(req, res) {
    console.log(req.body);
    res.end();
});

app.listen(3000);
您还可以使用通配符,例如type:text/*作为bodyParser.text的选项


当我使用您的示例运行此命令时,当我点击/test时,我看到控制台的hi输出。

您是否使用body parser中间件?是:self.app.usebodyParser;您是否正在使用body解析器中间件?是:self.app.usebodyParser;你是对的。我还必须在打电话到app.use.后记录我的路线。你说得对。我还必须在呼叫app.use.后记录我的路线。。