我正在尝试从我的一个 javascript 文件向 Node.js 应用程序内的快速路由进行 ajax 调用,请注意,该 javascript 文件也是同一 Node.js 应用程序的一部分。
我遇到的问题是传递给路由的数据始终为空。我可以看到正在调用该路由,因为我的 console.log 在 req 中显示了一个对象,但该对象是空的。
这是我的 ajax 调用代码:
$.ajax({
type: 'POST',
url: '/match',
contentType: 'application/json',
data: "test",
success: function(data) {
console.log("Successfully saved the matched beans to the user.");
}
}).done(function ( ) {
console.log("OK");
}).fail(function ( jqXHR, textStatus, errorThrown ) {
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrown);
});
我的路线如下:
router.post("/match", middleware.isLoggedIn, function(req, res) {
console.log("Route Test1: " + req.body);
console.log("Route Test2: " + JSON.stringify(req.body));
});
在路线的第一个 console.log 中,我得到 Route Test1: [object Object]
,在第二个 console.log 中,我得到 Route Test2: {}
。
如何访问我传递给路由的数据“test”?
预先感谢您的帮助!
最佳答案
首先,确保您使用的是 body-parser
中的 json()
方法,即
app.use(bodyParser.json())
<小时/>
虽然 "test"
是有效的 JSON,但它的信息量不是很大。
尝试
contentType: 'application/json',
processData: false,
data: JSON.stringify({data: 'test'})
在你的 route ,
console.log('Route Test1:', req.body.data)
<小时/>
您遇到的另一个问题是,由于串联,您会在 console.log
调用中自动将 req.body
转换为字符串。
相反,尝试一下
console.log('Route Test1:', req.body)
关于javascript - Ajax 调用快速路由不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45705083/