uniapp uni.request GET方式请求,不能直接传数组解决方法

目录

遇到的问题 GET请求方法传数组

想传一个数组,但是后台接受到的数据与浏览器中显示的数据和前台代码传的不一样;

  • 前台代码打印
    在这里插入图片描述

  • 浏览器显示数据

其中HerbalNameList ,变成了字符串,

在这里插入图片描述

  • 后台接受参数

变成了数组长度为1的数组,和前台传的数据不一样

在这里插入图片描述

解决方案

在request中增加拦截器,代码如下

uni.addInterceptor('request', {
	invoke(args) {
		// request 触发前拼接 url 
		const {
			data,
			method,
		} = args;
		if (method === "GET") {
			// 如果是get请求,且params是数组类型如arr=[1,2],则转换成arr=1&arr=2
			const newData = qs.stringify(data, {
				arrayFormat: "repeat"
			})
			delete args.data;
			args.url = `${args.url}?${newData}`;
		}
	},
	success(args) {},
	fail(err) {},
	complete(res) {}
})

后台接受数据
在这里插入图片描述

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
uni.request 数组参的问题可以通过在uni-app请求拦截器中进行处理解决。在引用的代码中,使用了qs库的stringify方法数组参数转换成符合URL规范的形式。通过设置arrayFormat参数为"repeat",可以将数组参数转换成重复的形式,例如将arr=[1,2转换成arr=1&arr=2。这样在GET请求中,就可以正确数组类型的参数了。 此外,在uni-app中,uni.request是一个全局方法,用于发起网络请求。它在引用中进行了封装,可以方便地调用和配置。uni.request方法接收一个对象作为参数,其中包括url、data、method等属性。通过在请求拦截器中对data进行处理,可以解决数组参的问题。在拦截器的invoke方法中,判断请求的method是否为GET,并且data中是否包含数组类型的参数。如果是,则使用qs库对数组参数进行处理,并将处理后的结果拼接在url的查询参数中。 综上所述,通过在uni-app请求拦截器中进行特殊处理,可以解决uni.request数组参的问题。可以参考引用中的代码进行配置,并根据实际需求进行适当的修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [uni-request 数组参问题修复](https://blog.csdn.net/embracelong/article/details/112548475)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [uniapp uni.request GET方式请求不能直接数组解决方法](https://blog.csdn.net/qq_36904182/article/details/118566566)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [uni.request.zip](https://download.csdn.net/download/qq_25434453/11816668)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值