好的,这似乎是最直接的方法,但是我真的不知道为什么要这样做,也找不到其他人遇到这个问题。
这是我的问题,我正在这样发送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
});
}
});
答案 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);
}
});