【问题标题】:JSON empty array entry disappearedJSON空数组条目消失了
【发布时间】:2016-04-23 02:12:14
【问题描述】:

我定义了一个 JSON,并将其发布到后端 (Node.js)。

var imj = {};
imj.images = [];
$.post("/image/uploadImages", imj, function(feedback){
.....

但是,后端收到的是

{}

“图片”条目消失了。

这是后端代码:

exports.uploadImages = function(req, res) {
    if (typeof req.body.images == 'undefined') {
        return res.json({
            code: 1,
            message: "parameter incomplete"
        })
    }
    .....

所以后端返回错误{code:1, message:'参数不完整'}

有人知道为什么吗?如果我想让后端接收这个空数组,我该怎么办?

【问题讨论】:

  • 您好像在发帖,图片为空数组,img.images = []。这背后有什么原因吗?这可能是它为空的原因,因为我没有看到您在代码中将任何图像分配给数组。
  • @JeremyRajan 我想上传图片,但有时用户不上传图片。为了代码整洁,无论用户是否上传图片,我都会上传它。
  • @KingstonChan,你能发一个小提琴,供我们检查吗?
  • 处理响应的后端代码是什么?
  • @Moogs 我已经编辑了问题,添加了部分后端代码及其响应

标签: javascript json node.js


【解决方案1】:

$.post 发送 url 编码的数据,所以你需要使用 $.ajax 并指定内容类型以及 JSON 字符串化数据。

var data = {};
data.images = [];

$.ajax({
    url: '/image/uploadImages', 
    type: 'POST', 
    contentType: 'application/json', 
    data: JSON.stringify(data)
}).done(function(data) {
  console.log(data); // { images: [] }
});

在服务器端确保使用正文解析器。

var app = require('express')();
var bodyParser = require('body-parser');

app.use(bodyParser.json());

app.post('/', function (req, res, next) {
  console.log(req.body); // { images: [] }
  res.json(req.body);
});

app.listen(9000);

【讨论】:

  • 您好,我试过这个方法,但是我的后端也收到了 {}。而且我也试过isPlainObject,我发现imj是PlainObject。你知道为什么吗?
  • @KingstonChan 你在用快递吗?如果是这样,您是否使用body-parserexpressjs.com/en/4x/api.html#req.body
  • 是的,我正在使用 express 和 body-parser。 app.use(bodyParser.urlencoded({extended: true }));
  • @KingstonChan 我认为你需要app.use(bodyParser.json()); // for parsing application/json
  • @KingstonChan 我通过JSON.stringifying 数据使其工作。更新答案
【解决方案2】:

contentType nodeJS 在后端期待什么? $.post 方法的默认 contentTypeapplication/x-www-form-urlencoded。如果您的端点正在寻找 application/json,您将始终看到一个空输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 2012-12-22
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    相关资源
    最近更新 更多