jangovue-前端传递数组,后端接收和打印数组
目录
jango+vue 前端传递数组,后端接收和打印数组
前端
- 探索:
原本以为前端是不可以传递数组的,只能传递json字符串,所以也在尝试将数组转化成字符串先传递到后端,后端打印结果是一片乱码,代码如下:专门加上{emulateJSON:true}让数据以非JSON的形式传递,结果无效。
var qs = require('qs');
var tableDataT= this.tableData9
tableDataT = qs.stringify( tableDataT)
console.log(this.tableData9);
this.$http.post('/inserttest/', qs.stringify({'tableData9':this.tableData9} )
{emulateJSON:true}
).then(res => {
var result = JSON.parse(response)
if (res.data.text == 'ok') {
// 上传成功的操作
this.$message.success('已经成功!!')
} else {
this.$message.error('错误');
}
console.log("result:",response)
})
- 方案:
前端是可以直接传递数组到后端的,知识前端的传递方式和后端的接收方式是要发生相应的改变,是数组。代码如下:注意要加上: traditional:true
this.$http.get('/inserttest/',{params : {'tableData9': this.tableData9 }
,traditional:true}).then(res =>{
console.log(res);
if(res.data.text == 'ok'){
this.$message.success('保存到数据库')
}
},function(res){
console.log(res.status);
});
traditional:true阻止深度序列化(看着像乱码,没有保留列表的存储方式),否则获取的列表将是空的。
后端
后端改用获取列表的形式,这里一定要注意的是: getlist(“tableData9[]”)
后面的括号[]一定要加上,因为前台发送的数据自动给数组后面加了个[]。代码如下:
tableData = request.GET.getlist("tableData9[]")
完成数据交互后,下面就是一系列的数据处理分析和计算了。