首页 文章

Ajax呼叫快递路线无法正常工作?

提问于
浏览
0

我正在尝试从我的一个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: {} .

如何访问我传递给路线的数据“测试”?

在此先感谢您的帮助!

1 回答

  • 1

    首先,确保使用 body-parser 中的 json() 方法,即

    app.use(bodyParser.json())
    

    虽然 "test" 是有效的JSON,但它的信息量不大 .

    尝试

    contentType: 'application/json',
    processData: false,
    data: JSON.stringify({data: 'test'})
    

    在你的路线上,

    console.log('Route Test1:', req.body.data)
    

    您遇到的另一个问题是,由于连接,您会自动将 req.body 转换为 console.log 调用中的字符串 .

    相反,试试吧

    console.log('Route Test1:', req.body)
    

相关问题