使用Nodejs从客户端传递到服务器时修改的数据格式

时间:2015-10-06 09:06:50

标签: javascript json ajax node.js

使用Node.js将数据发送到服务器时遇到了一些麻烦。我很确定还有关于同一问题的其他主题,但我真的不知道要搜索什么来找到它......

我的应用非常粗糙:

  • 包含表格的1个html文件
  • 1 global.js,在发送表单时将数据发送到我的服务器
  • 服务器端的1个data.js,处理global.js发送的查询

当我通过$ .ajax POST将数据从客户端传递到服务器并使用req.body检索它时,数据格式混乱:

以下是我发送的内容:

newData = { ‘body ‘ : [ { ‘key_1’ : ’stuff’ , ‘key_2’ : ’stuff’ } ] }

我得到了什么:

req.body == { ‘body[0][key_1]’ : ‘stuff’ , ‘body[0][key_2]’ : ‘stuff’  }

我的应用程序的完整代码如下:

global.js:

function sendStuff(event) {
    event.preventDefault();

    var newData = {'body' : ''};
    var items = [{'key_1' : 'stuff', 'key_2' : 'stuff', 'key_3' : 'stuff'}];
    newData.body = items;

    $.ajax({
        type        : 'POST',
        data        : newData,
        url         : '/data/adddata',
        dataType    : 'JSON'
    }).done(function(response) {
        if (response.msg === '') {
            console.log('Everything ok');
        }
        else {
            console.log('Error:' + response.msg);
        }
    });
}

在服务器端,data.js:

router.post('/adddata', function(req, res) {
    var db = req.db;
    var collection = db.get('data');
    console.log(req.body);

    collection.insert(req.body, function(err, result){
        res.send(
            (err === null) ? { msg: '' } : { msg: err }
        );
    });
});

有什么想法吗? 非常感谢你的帮助,

马克西姆

1 个答案:

答案 0 :(得分:0)

我的猜测是这是格式化问题...数据是由ajax调用格式化的,因为您传递的是对象而不是JSON字符串。尝试将JSON.stringify(newData)传递给jquery ajax。