Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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 具有$.post请求的简单节点。返回空对象_Javascript_Node.js_Post - Fatal编程技术网

Javascript 具有$.post请求的简单节点。返回空对象

Javascript 具有$.post请求的简单节点。返回空对象,javascript,node.js,post,Javascript,Node.js,Post,我有两个相互对应的js文件,一个用于服务器,一个用于客户端。 客户端应该使用名为/postGetInc的post请求,向服务器发送一个数字,服务器将其递增并返回结果。每当我试图将特定的数字发布到服务器时,它都会将其视为一个空对象。 我知道输入也应该是一个对象,但是当我使用{number:number}创建一个对象时,它仍然无法识别数值 这就是我的server.js上的小代码 app.post("/getInc", function (req, res) { console.log("req: "

我有两个相互对应的js文件,一个用于服务器,一个用于客户端。 客户端应该使用名为/postGetInc的post请求,向服务器发送一个数字,服务器将其递增并返回结果。每当我试图将特定的数字发布到服务器时,它都会将其视为一个空对象。 我知道输入也应该是一个对象,但是当我使用{number:number}创建一个对象时,它仍然无法识别数值

这就是我的server.js上的小代码

app.post("/getInc", function (req, res) {
console.log("req: " + req);
console.log("req.number: " + req.number);

req.number++;
res.send(req.number);
});
这是我在client.js上发布文章时使用的函数

function postGetInc(number){
var res = "no response";
toSend = { "number": number };
$.post("/getInc", toSend, function (response) {
    console.log(response);
    res = response;
});
return res;
//this should return number+1
//in case of a failt, it returns "no response"
}
每当我运行postGetInc10时,我都会

"no response" 
打印在我的控制台上

在我的服务器控制台上,我得到:

req: [object Object]
req.number: undefined
如果我将{number:number}替换为刚才的number,将req.number替换为number,我会在控制台上得到相同的消息


感谢阅读,我很想知道我做错了什么,请帮助我。

要访问服务器端的参数,您必须使用req.body:

我建议你读一下这本书。请注意,默认情况下它是未定义的,您必须首先注册主体解析器:

var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

另一个问题是无法从postGetInc返回res。请参阅以了解原因和解决方案。

因此,如果我没有弄错,req表示从客户端发送到服务器的所有信息,而不仅仅是一个对象?ip地址也是如此。HTTP请求还包含大量元数据。我用req.body.number更改了每个req.number,这给了我一系列错误,它找不到未定义的数值。如果我添加您提供的两行代码并将它们放在server.js文件的开头,我会得到一个错误,即在启动服务器时找不到模块。我在哪里可以得到这个包,如果我想要相同的结果,是否绝对需要包含这个包?谢谢你的回复正如我所说,默认情况下req.body是未定义的。是的,它是需要的。您可能通过npm安装体解析器获得它。
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded