簡體   English   中英

ajax請求從nodejs中的表單發布未定義的數據

[英]ajax request posting undefined data from form in nodejs

我正在嘗試創建一個注釋表單,以在博客架構數組中添加注釋,但是當我使用ajax時,它在控制台日志的位置下方給出了undefined,而當我使用簡單的發布請求時,它可以正常工作。 我正在使用mongoose,nodejs,express,jquery ajax我的腳本如下

var frm = $('#commentForm');

frm.submit(function (e) {
    e.preventDefault();
    console.log('clicked');
    $.ajax({
        type: 'POST',
        url: "/blog/addComment",
        contentType: "application/json; charset=utf-8",
        dataType: 'json'
        })
        .done(function(data) {
            addNewComment(data);
        })
        .fail(function() {
            console.log("Ajax failed to fetch data");
        });
});

function addNewComment(data){
    console.log(data);
}

我的路線如下

//add comments
router.post('/addComment',function(req,res,next){
    console.log(req.body.comment+" "+ req.body.userId+" "+req.body.postId);
    var newComment = {
        'text': req.body.comment,
        'author': req.body.userId
    }
    Post.addComment(req.body.postId, newComment, function(err,comment){
        if(err) throw err;
        console.log(comment);
        res.send(comment);
    });
});

我的貓鼬模式是

//add comments
module.exports.addComment = function( postId, newComment, callback){
    var query = { '_id': postId};
    console.log('postid: '+postId+"  newcomment: "+newComment.text+ " "+newComment.author);
    Post.findOneAndUpdate( query, { $push:{'comments': newComment} }, {new:true} , callback);
}

那是因為數據沒有在ajax調用中定義,請使用以下命令(如果frm是actallu形式)或使用use數據:形式name.serialize()

var frm = $('#commentForm');
frm.submit(function (e) {
e.preventDefault();
console.log('clicked');
$.ajax({
    data : $(this).serialize(),
    type: 'POST',
    url: "/blog/addComment",
    contentType: "application/json; charset=utf-8",
    dataType: 'json'
    })
    .done(function(data) {
        addNewComment(data);
    })
    .fail(function() {
        console.log("Ajax failed to fetch data");
    });
});  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM