带有$ .post请求的简单nodeJs。返回空对象

时间:2014-12-03 17:22:41

标签: javascript node.js post

我有2个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);
});

这是我在post.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"
}

每当我运行postGetInc(10)时,我都会

"no response" 

打印在我的控制台上。

我的服务器控制台上的

req: [object Object]
req.number: undefined

如果我用号码替换{“number”:number},用号码替换req.number,我会在控制台上打印相同的消息。

感谢阅读,我很想听听我做错了所以请帮助我。

1 个答案:

答案 0 :(得分:0)

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

req.body.number

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

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

另一个问题是,您无法从res返回postGetInc。有关原因和解决方案,请参阅How to return the response from an Ajax call?