通过POST进行数组(Ajax)

时间:2019-06-14 05:02:31

标签: javascript jquery arrays node.js express

好的,这似乎是最直接的方法,但是我真的不知道为什么要这样做,也找不到其他人遇到这个问题。

这是我的问题,我正在这样发送POST请求;

  $.ajax({
      type: "POST",
      url: '/user/sell',
      data: data,
      success: function(data) {
        console.log('Call was successful');
      }
    });

数据对象中有一个名为items的数组。当我记录数据对象时,就像应该的那样,它很好,但是当我在Express函数中记录数据对象时,items数组无缘无故地更改为items[]

NodeJS

'items[]': '15716345'

JS(浏览器)

items: [15716345]

你知道这里发生了什么吗?

下面是代码的完整版本。 整个屏蔽(前端)     //验证地址     if($('。block.payment .wrapper输入:eq(0)')。val()!== $('。block.payment .wrapper输入:eq(1)')。val()){       返回错误(“字段不匹配”);     }

// Get known data
var type = $('.body.inventory .methods .method.selected').data('type'),
    items = [];

var data = {
  type,
  address: $('.block.payment .wrapper input:eq(0)').val()
}

if(type === 'steam'){
  var app = $('.body.inventory .sub-methods .method.selected').data('app');
  data['app'] = app;

  $('.body.inventory .item[data-app="'+app+'"].selected').each(function(){
    items.push($(this).data('id'));
  });
}else{
  $('.body.inventory .item[data-type="'+type+'"].selected').each(function(){
    items.push($(this).data('id'));
  });
}

data['items'] = items;

// Execute route or smt
$.ajax({
  type: "POST",
  url: '/user/sell',
  data: data,
  success: function(data) {
    console.log('Call was successful');
  }
});

后端

router.post('/sell', function(req, res, next) {
  try {
    console.log(req.body);
    res.send({
      success: 1
    });
  } catch(e) {
    if(e) console.log(e);

    res.send({
      success: 0,
      error: e
    });
  }
});

2 个答案:

答案 0 :(得分:1)

JSON body parser middleware设置为对您的expressJS应用程序的请求。

const bodyParser = require('body-parser');

app.use(bodyParser.json())

在AJAX请求中,将contentType设为application/json,而不是默认的application/x-www-form-urlencoded; charset=UTF-8'

$.ajax({
  contentType: 'application/json',
  type: "POST",
  url: '/user/sell',
  data: data,
  success: function(data) {
    console.log('Call was successful');
  }
});

答案 1 :(得分:0)

假设这是您要发布的阵列列表。

object[] Obj = new object[1];
Obj [0] = "value1"
Obj [1] = "Value2"
Obj [3] = {"CollectionValue1, CollectionValue2"}

$.ajax({
  url: '../Controller/MethodName',
  type: 'post',
  datatype: 'json',
  async: false,
  contentType: "application/json; charset=utf-8",
  data: JSON.stringify({ ControllerParameterName: Obj }), <!-- Obj is your Array -->
  success: function (data) {
    alert(data.Response);
  }
});