前后端分离,初级问题,不会传参

前后端分离,前端写了删除函数,后端无法接收这个数组 前端总提示Required request parameter 'ids' for method parameter type Integer[] is not present,后端是

 @DeleteMapping(value="/deleteSaleChance",produces = "application/json;charset=UTF-8")
    @ApiOperation(value = "删除",notes = "删除",httpMethod = "DELETE")
    public ResultInfo deleteSaleChance(@RequestParam("ids") Integer[] ids){
        return saleChanceService.deletSaleChance(ids);
    }

前端是

//删除
  deleteSalechance(saleChanceid){
    let saleChanceIds=[]
  
    if(saleChanceid==null){

    //判断表格数据
        let saleChances=this.$refs.saleChanceTable.selection;
    console.log(saleChances)
    if(saleChances.length==0){
      this.$message.warning("没有要选择删除的营销机会");
      return;
    }
    //拼接删除的参数
    for(let i=0;ielse{
      saleChanceIds.push(saleChanceid)
  }
 //做删除操作
 this.$http.delete('saleChance/deleteSaleChance', this.$qs.stringify({ids:saleChanceIds},{arrayFormat:'repeat'}))  .then(  
      resp =>{
        if(resp.data.code==200){
          this.$message.success(resp.data.message)
          this.loadSaleChance()
        }else{
          this.$message.error(resp.data.message)
        }

      }
    )

  },

试了很多办法都没有办法让后端接收ids,怎么修改啊

你好,根据报错提示 应该是你的参数格式后端要求的不一样,能否看一下控制台 接口传参 参数

该回答通过自己思路及引用到各个渠道搜索综合及思考,得到内容具体如下:
根据您提供的代码,可能是前端发送的请求格式和后端接收的请求格式不一致导致的。您可以尝试按照以下方式修改前端代码,以便正确地向后端发送请求:

this.$http.delete('saleChance/deleteSaleChance', {
  params: {
    ids: saleChanceIds
  },
  paramsSerializer: function(params) {
    return qs.stringify(params, {arrayFormat: 'repeat'})
  }
}).then(resp => {
  // ...
})

对于 axios,可以使用 params 选项将参数作为 URL 参数发送,并使用 paramsSerializer 选项将数组格式化为重复的查询参数。在这种情况下,您需要在前端代码中引入 qs 库(可以使用 npm install qs 安装),并将其用于序列化 URL 参数。

如果您仍然遇到问题,请检查后端代码是否按照以下方式正确地接收了参数:

@RequestParam("ids") Integer[] ids

请确保请求的 Content-Typeapplication/x-www-form-urlencoded,并且参数名为 ids 的数组值已正确地发送到后端。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

要不改成@responsebody试试

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^