[英]How to obtain an array of json back from req.body in node.js?
我想将 json 的数组发布到节点 js。 我使用 ajax 发布方法做了同样的事情。在服务器端,我尝试使用 req.body 访问相同的内容。 但是结果是字符串的形式。 所以我无法逐个迭代 json 数组元素。我该怎么做?
req.body: '[{"img_id":"img_1","name":"abc","source":"img/Icon_ABc.
png"},{"img_id":"img_0","name":"flower","source":"img/Icon_flower.png"},
{"img_id":"img_5","name":"panda","source":"img/Icon_panda.png"
}]'
我使用的 post 方法是 ajax。
Dataform.append("finalAray",JSON.stringify(finalArray))
$.ajax({
url: '/api/upload/',
type: 'POST',
processData: false,
contentType: false,
dataType : 'application/json; charset=utf-8',
data: Dataform,
success: function(data){
//................
},
error: function(exception){
alert('error:'+exception);
}
});
由于我无法从 req.body 获取数组,因此我在 ajax 帖子的 url 中将 JSON 数组作为查询参数发送。 所以我在服务器的 req.query 中将数组作为字符串。 然后我解析它并能够迭代。
$.ajax({
url: '/api/upload/?finalArray='+JSON.stringify(finalArray),
type: 'POST',
processData: false,
contentType: false,
dataType : 'application/json; charset=utf-8',
data: fileform,
success: function(data){
// ........
},
error: function(exception){
alert('error:'+exception);
}
});
在服务器中,
array=req.query.finalArray;
JSON.parse(array);
array.forEach(function(element,index){
console.log(element);
console.log(index);
});
感谢您的测试和更新。 我曾假设您仅发布 JSON,而您发布的表单数据包括 JSON。
我相信在这种情况下最好的方法是使用multer模块来解析上传的数据,如下所示:
服务器.js
const express = require("express");
const app = express();
const port = 3000;
const multer = require('multer')
const upload = multer();
app.use(express.static("./"));
app.post('/', upload.any(), function(req,res){
console.log('Received files from client: ', req.files);
console.log('Received form data from client: ', req.body);
console.log('Iterating array:');
let array = JSON.parse(req.body.finalAray);
array.forEach((element, index) => {
console.log(`Element at [${index}]: ${element}`)
});
res.json( { "status": "ok" } );
})
app.listen(port, function(){
console.log(`Example app listening at http://localhost:${port}`)
})
客户
{
Dataform.append("finalAray",JSON.stringify(finalArray))
$.ajax({
url: '/api/upload/',
type: 'POST',
processData: false,
contentType: false,
data: Dataform,
success: function(data){
//................
},
error: function(exception){
alert('error:'+exception);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.