我有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,我会在控制台上打印相同的消息。
感谢阅读,我很想听听我做错了所以请帮助我。
答案 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?。