dcloudio/uni-app

支付宝小程序request的data为数组时会导致传参是空对象{}

Closed this issue · 6 comments

发行方式

小程序

具体平台

钉钉小程序 1.25.10
支付宝小程序 2.9.30

开发环境

Windows

项目创建方式

HBuilderX

依赖版本

HBuilder X 4.76.2025082103
vue3

问题描述

在钉钉小程序中使用如下代码发送请求会导致data始终为空对象{}

      uni.request({
        url: "xxxx",
        method: "POST",
        data: []
      })

本地排查request后发现在 commit: 076f176 这个提交点修改了对data的处理:

Image

重现步骤

在hbuilder x中直接新建一个uni-ui项目,然后修改index中代码为以下:

<template>
  <view class="container">
  </view>
</template>

<script>
  export default {
    data() {
      return {
      }
    },
    methods: {

    },
    created() {
      uni.request({
        url: "https://baidu.com/",
        method: "POST",
        data: [{
          a: '1'
        }]
      })
    }
  }
</script>

<style>
  .container {
    padding: 20px;
    font-size: 14px;
    line-height: 24px;
  }
</style>

期望行为

No response

实际行为

No response

截图或录屏

No response

你的意思是 data 传入有值的数组也会变成 '{}' 吗?

你的意思是 data 传入有值的数组也会变成 '{}' 吗?

对,因为isPlainObject传数组后返回了"[object Array]"而不是"[object Object]"

原本的修复不健壮,未考虑数组字符串的情况。目前钉钉小程序这里仍然需要发送字符串之后结果

在支付宝小程序中使用如下代码发送请求会导致data始终为空对象{}

这里你说的应该是 钉钉小程序吧?

在支付宝小程序中使用如下代码发送请求会导致data始终为空对象{}

这里你说的应该是 钉钉小程序吧?

是我弄错了,已修改

请使用最新版 HBuilderX 重试一下。如果仍有问题请 reopen