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

Data format modified when passed from client to server, using Nodejs

本文关键字:服务器 修改 数据格式 Nodejs 客户端 使用      更新时间:2023-09-26

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

我的应用程序非常粗糙:

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

当我通过$.ajaxPOST将数据从客户端传递到服务器并使用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 }
        );
    });
});

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

最大

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