『前端日志』将Bootstrap Table表格中的行数据从后台删除遇到的问题

关联上一篇文章。

说明:上一篇文章写的是从前端页面删除Bootstrap Table表格中数据遇到的问题。由于表格数据是从前端向后台发送ajax请求,然后后台从本地json文件中取出数据,再显示到前端的,因此一旦刷新页面,用上一篇文章的方法删掉的表格数据又会出现。因此,下一步是从前端发出ajax请求,请服务器将本地json文件中的数据删除,这样刷新页面也不会出现已删除数据了。
思路:将前端选中的行的索引(可能选中多行,因此写成了索引数组),用ajax发送到后台,后台读取本地json文件,将读到的数据转化为JS对象,借助索引删除前端选中的行数据。后台处理思路参考了(照抄了)这位大佬的文章
问题:我试图把数组直接放到ajax的post请求体中(因为我以为json格式必须是数组里带对象的形式),然后把contentType设置成了"text/html",把dataType设置为"text",其实就是在瞎写,反正后台要么是undefined要么是空的。后来改回用json格式传输,就解决了,查看了一下请求体,发现json传输到后台看着就是一个数组。咨询了前辈后发现,产生问题的原因其实和我第二篇文章一样,因为后台无法解析传输过来的数据类型,需要借助中间件,解析json类型的数据可以引用官网的中间件(可以看一下第二篇文章),而text/html传输类型比较少见,可能需要自己写程序去解析数据,具体的我也不懂,欢迎大家指正!

前端用ajax传输数据的代码:

        //请求后台删除数据
        $.ajax({
            url:"http://127.0.0.1:8081/removeDeptData",
            type:'POST',
            data:JSON.stringify(index),
            dataType:'json',
            contentType:"application/json",
            success:function(data){
                alert(data);
            }
        });    

后台服务器处理请求的代码:

//basedata页面 接收departmentExcel需要删除的数据行的索引,并从departmentdata.json文档中删除
app.post('/removeDeptData', function(req, res){
    let response = req.body.sort(function(a,b) {return b-a});	//获取索引数组,并降序排列
    fs.readFile('./public/departmentdata.json', function(err, data){	//读取文件
        if(err)
            return console.error(err);
        let newData = data.toString();	//以字符串形式读取文件中的数据
        newData = JSON.parse(newData);	//将数据转化为json对象
        response.forEach(element => {	//遍历索引数组
            newData.splice(element, 1);	//根据索引删除json数组中的数据(若之前没有对索引数组排序,此处会漏删数据)
        });
        fs.writeFile('./public/departmentdata.json', JSON.stringify(newData, null, "\t"), function(err){	//将新json数组重新写入文件
            if(err)	
                console.error(err);
            console.log("删除数据成功");
        });
    });
});

用来解析json数据类型的引用:

app.use(express.json());
app.use(express.urlencoded({extended:true}));
app.use('/public', express.static('public'));

效果可以看上一篇文章。如有问题,欢迎指正!
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值