uni-app x 使用uni.reuqest报错

uni-app x 使用uni.reuqest报错

测试过的手机:

模拟器

操作步骤:

  • 安装上面描述的来

预期结果:

能用

实际结果:

不能用

bug描述:

uni-app x 使用uni.request报错; 请求是post请求,表头是"Content-Type": “application/x-www-form-urlencoded”,

data = { data, // JSON化的数据 sign, // 校验 …

},

  1. 其中data.data里面的数据是对象JSON.stringify的数组,在这里面增加一个menu_data是个数组对象,使用uni.request就会报错,如果不加上这个数组对象,就不会报错。报错信息如下:第三张图

  2. 如果将menu_data JSON.stringify一下报错,第三张图


更多关于uni-app x 使用uni.reuqest报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

重点是图3, 这是你自己业务服务器的报错。

更多关于uni-app x 使用uni.reuqest报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在 uni-app x 中使用 uni.request 发送 POST 请求时,如果 data 参数包含嵌套的复杂对象(如数组对象),可能导致序列化问题。错误通常源于数据格式与 application/x-www-form-urlencoded 不兼容。以下解决方案:

  1. 手动序列化数据
    对于 application/x-www-form-urlencoded 类型,需将数据转换为 URL 查询字符串格式(如 key1=value1&key2=value2)。使用 qs 库或手动拼接:

    const data = qs.stringify({
      data: JSON.stringify(originalData),
      sign: signValue
    });
    
  2. 检查数据内容
    确保 menu_data 数组中的对象均为可序列化值(避免循环引用或非常规类型)。若 menu_data 包含特殊字符或未编码内容,需通过 encodeURIComponent 处理。

  3. 调整请求配置
    若问题持续,尝试将请求头改为 application/json,并直接传递 JSON 对象:

    header: { "Content-Type": "application/json" },
    data: { data: originalData, sign: signValue }
回到顶部