vue axios 批量删除 数组参数

方法一:前端循环请求服务器端delete(id)方法

请问如何获得element-ui表格中的勾选项index,以实现批量删除功能

https://segmentfault.com/q/1010000012759131

方法二:传递 string类型字符串。例如: ‘1,2,3,4‘

ids =[1,2,3,4]

url: ‘/investigator/submitAll/‘ + ids,

method: ‘post‘

服务器端接收到: string类型字符串 ‘1,2,3,4‘ 。

方法三:直接传递数组类型(网上案例均尝试失败)

axios传递数组参数爬坑总结

https://www.jianshu.com/p/68d81da4e1ad

参数:ids=1&ids=2&ids=3

服务器端难以接收。

2 axios向后台传递数组作为参数

https://blog.csdn.net/u012317188/article/details/79752096

JSON.stringify(ids)

服务器端收到的是string类型的 ‘[1,2,3,4]’

综上我采用了 方法二。

(如果有人尝试直接传递数组成功了,请一定留言!)

实现 : elementUI  table 的 多选 :

http://element-cn.eleme.io/#/zh-CN/component/table

代码摘要:

    <el-button style="margin:0 0 0 20px;" type="primary" @click="toggleSelection(list)">反选</el-button>
          <el-button style="margin:0 0 0 20px;" type="primary" @click="submitAllSelection()">批量提交</el-button>

 <el-table
      ref="multipleTable"
      @selection-change="handleSelectionChange">
      <el-table-column
        type="selection"
        width="55"/>

  data() {
    return {
      multipleSelection: []
     }
   }
methods: {
    toggleSelection(rows) {
      // console.log(‘rows‘, rows)
      // console.log(‘multipleTable-start‘, this.$refs.multipleTable) //table对象
      // this.$refs.multipleTable.toggleAllSelection(rows) //全选或全不选
      if (rows) {
        rows.forEach(row => {
          this.$refs.multipleTable.toggleRowSelection(row)// 反选
        })
      } else {
        // this.$refs.multipleTable.clearSelection() //清除选中
      }
    },
    handleSelectionChange(val) {
      this.multipleSelection = val  //当前选中行的数据
    },
    submitAllSelection() {
      if (this.multipleSelection.length > 0) {
        this.$confirm(‘此操作将提交选中项, 是否继续?‘, ‘提示‘, {
          confirmButtonText: ‘确定‘,
          cancelButtonText: ‘取消‘,
          type: ‘warning‘
        }).then(() => {
          const idList = []
          for (const v of this.multipleSelection) {
            idList.push(v.DataSourceID)
          }
          this.submitAll(idList)
        }).catch(() => {
          this.$notify({
            title: ‘提示‘,
            message: ‘已取消批量提交‘,
            type: ‘info‘,
            duration: 2000
          })
        })
      } else {
        this.$notify({
          title: ‘提示‘,
          message: ‘请勾选要提交的项!‘,
          type: ‘warning‘,
          duration: 2000
        })
      }
    },
    submitAll(idList) {
      // const idList = JSON.stringify(ids)
      // console.log(‘idList‘, idList)
      submitAll(idList).then((response) => {
        if (response.success) {
          console.log(‘response‘, response.data)
          for (const v of this.multipleSelection) {
            const index = this.list.indexOf(v)
            this.list[index].HasSubmitted = true
          }
          this.$notify({
            title: ‘成功‘,
            message: ‘批量提交成功‘,
            type: ‘success‘,
            duration: 2000
          })
        } else {
          this.$notify({
            title: ‘失败‘,
            message: ‘批量提交失败‘,
            type: ‘danger‘,
            duration: 3000
          })
        }
      })
    }
}

export function submitAll(idList) {
  return request({
    url: ‘/investigator/submitAll/‘ + idList,
    method: ‘post‘
  })
}

根据axios 封装出request 以简化请求。

  

C# webapi控制器

        /// <summary>
        /// 批量提交
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("SubmitAll/{idList}")]
        public ApiResult SubmitAll(string idList)
        {
            var result = new ApiResult();
            result.success = false;

            if (!String.IsNullOrEmpty(idList) && !String.IsNullOrEmpty(idList.Trim()))
            {
                string[] strArray = idList.Split(‘,‘);
                if (strArray.Length > 0)
                {
                    int[] ids = new int[] { };
                    ids = Array.ConvertAll<string, int>(strArray, s => int.Parse(s));
                    var num = manage.SubmitAll(ids, User.Identity.GetUserId<int>());
                    result.success = true;
                    result.data = num;
                }

            }

            return result;
        }

  

// 数据库访问层

        public int SubmitAll(int[] idList, int userId)
        {
            int num = 0;
            using (var pmdb = new ProjectEntities())
            {
                using (var tran = pmdb.Database.BeginTransaction())
                {
                    try
                    {
                        var list = pmdb.T_Investigator.Where(d => idList.Contains(d.InvestigatorID) && d.CreateUserID == userId && d.HasSubmitted == false).ToList();
                        if (list.Count > 0)
                        {
                            foreach (var item in list)
                            {
                                item.HasSubmitted = true;
                            }
                            num = pmdb.SaveChanges();
                            tran.Commit();
                        }
                    }
                    catch (Exception ex)
                    {
                        tran.Rollback();//回滚
                        throw ex;
                    }
                }
            }

            return num;
        }

  

原文地址:https://www.cnblogs.com/hao-1234-1234/p/10308900.html

时间: 2024-09-28 20:44:02

vue axios 批量删除 数组参数的相关文章

vue+axios通过formdata提交参数和上传文件

demo.vue 文件 <template> <div class="demo"> <input v-model="importForm.month" type="text" name="month"/> <input ref="importFile" type="file" name="importFile" @change

关于vue axios不能发送数组问题

和后台对接数据时候遇到一个问题,怎么也发送不了数组,刚开始以为是因为参数是一个json对象的原因 ,这个问题调试了一下午,到第二天早上才发现可能是数组原因, 于是乎,解决了,利用URLSearchParams对象解决 let params = new URLSearchParams(); params.append('dataName', this.activeName); params.append('dataBody',JSON.stringify(this.searchTableItemS

[技术分享]20171212_后端开发_批量删除使用@requestBody注解获取前台传递参数

批量删除 难点在于前台的参数如何组织?组织完的参数后台如何接收? 我现在就把我们项目中用到的批量删除的方法整理出来,供大家参考. 先上一个通用版: var ids = new Array(); var vo = {}; vo.sequenceid = item.sequenceid; ids.push(vo); var data = JSON.stringify(ids); @RequestMapping(value="/list" method=RequestMethod.Delet

js forEach参数详解,forEach与for循环区别,forEach中如何删除数组元素

 壹 ? 引 在JS开发工作中,遍历数组的操作可谓十分常见了,那么像for循环,forEach此类方法自然也不会陌生,我个人也觉得forEach不值得写一篇博客记录,直到我遇到了一个有趣的问题,我们来看一段代码: let arr = [1, 2]; arr.forEach((item, index) => { arr.splice(index, 1); console.log(1); //输出几次? }); console.log(arr) //? 请问,这段代码执行完毕后arr输出为多少?循环

【前端】vue项目 url中传递数组参数

[问题情景] 我在项目中使用了一个iframe,引入另一个项目,想通过动态修改iframe的src使iframe中的页面动态展示,在这个过程中,我碰到了一个问题,就是我往url传递数组参数的时候,接受到的是[object object],这使我读不出我传递的参数.但是我百度谷歌了一把,都没有找到很好的解决方案.下面附上我的解决方案. [解决方案] 传递参数的页面 let testArray = [{a:1},{b:2},{c:3}]; let testStr = encodeURICompone

ajax传递给后台数组参数方式

在项目上用到了批量删除与批量更改状态,前台使用了EasyUI的DataGrid,用到了批量更改数据状态功能. 在前台可以获取每条数据的ID,但是如何通过数组方式传递给后台? 通过昨晚的各种方式的调试,终于得出了答案! 在此作为备忘. 目前有两种方式可行: 方式一 前台代码: [javascript] view plaincopy // 方式一 var _list = {}; for (var i = 0; i < checkedRow.length; i++) { _list["selec

PHP数据访问批量删除(10261101)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

网上图书商城项目学习笔记-015删除和批量删除购物车条目

一.流程分析 二.代码 1.view层 (1)list.jsp 1 <a href="<c:url value='/CartItemServlet?method=batchDelete&cartItemIds=${item.cartItemId }'/>">删除</a> 2 3 <a href="javascript:batchDelete();">批量删除</a> 4 /* 5 * 批量删除 6

考试系统之批量删除

刚上手考试系统,感觉很难,什么也不会,主要是里面加了MVC框架,加上一些新的技术,而今天就让我们研究其中的一条线.就拿删除功能来理清我们的思路吧. 而对于删除可以分为两个步骤:1.从前台获取要删除考试的ID. 2.根据考试ID进行删除. 首先是js代码: <span style="font-family:KaiTi_GB2312;font-size:18px;">//批量删除 $("#btn_Remove").unbind("click&quo