javascript - Ajax 调用快速路由不起作用?

标签 javascript jquery node.js express

我正在尝试从我的一个 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/

相关文章:

javascript - 单击时的 css3 动画

php - 使用 PHP foreach 代码填充日历

javascript - Node JS 中事件的链接请求和数据

IE8 中的 JavaScript 日期未定义/NaN

javascript - Jquery ajax 如何显示错误消息?

javascript - 如何使用对象正确设置插件的选项

javascript - Jquery根据属性值对div进行排序(降序)

javascript - 在knockoutjs中使列表项的内部HTML可点击

javascript - 使用 cordova 表达 nodejs socket.io

node.js - 相互通信微服务 - 如何?