无法在我的routes.js中捕获发布的数据

时间:2013-12-08 09:56:50

标签: javascript jquery ajax node.js express

表达申请。我通过ajax发布数据。我无法从我的路线中捕获数据。这是我的ajax:

function Confirme(commentid,status){
            $.ajax({
                url: '/Management/Comment/Confirm/',
                type: "POST",
                data: {"id": commentid,"status": status}

            })

我正在向此函数发送commentid(345345345)和status(0)。 (也在萤火虫中试过)。这是我的路由代码:

app.post('/Management/Comment/Confirm/',function(req, res){
    if(!req.session.email){
        return res.render(__dirname+"../../../views/management/accessdenied.jade",{
        title: 'Dont have permission',
        stylesheet: 'accessdenied',
        error: 'You are not authorized to access this page'
        });
    }
    console.log('Is id correct:' +req.params.id);
    Comment.findByIdAndUpdate( req.params.id, {"status": 1}, function(err, result) {
        if (err) console.log(err);
        console.log("result:"+result);
        Comment.find({},function(err, comments){
            console.log("comments: "+comments)
            if(! comments.length) {
                console.log('no comment');
            }

            return res.render(__dirname+"/views/commentindex",{
            title: 'comment list',
            stylesheet: 'commentindex',
            comments:comments
            });

        }); 
    });

});

但是这段代码总是让我回到未定义:

console.log(req.params.id);
我检查了萤火虫。我想可能是我无法将数据发送到我的ajax函数。但不是。这是萤火虫:

enter image description here

2 个答案:

答案 0 :(得分:1)

您应该使用req.body.idreq.param('id')

req.params在路线网址中包含命名参数。例如:

app.post('/post/:id', ...);
                ^^^ this can be read using `req.params.id`

答案 1 :(得分:0)

你必须写req.body.id。 对于POST请求,其req.body.params名称和GET请求其req.query.paramsName