1.小程序前端: goodlist里就是放了数据的数组,不必要的代码已经全删了,单纯的一个小程序前端的数组传递给后台的Demo,Post请求头必须一样(官方限制)。
import { request } from "../../request/index.js";//自己写的request 用的时候导入
//点击支付
async handlerOrderPay(){
const cart = this.data.cart;
let goodsList=[];
cart.forEach(v=>goodsList.push({
goods_id:v.id,
goods_number:v.num,
goods_price:v.subTitle
}));
const orderParams = {goodsList};
//请求头必须是这样子的 必须 必须
const header = { 'content-type': 'application/x-www-form-urlencoded' };
//发送请求 **这里用的是自己写的request** http://localhost:8081/v1/api/order/create
const {data} = await request({url:"/order/create",method:"POST",data:orderParams,header:header});
if (data.data.length>9) {
await showToast({title:"发送成功"});
}
}
- 后台接收数组,一个简单Demo,依赖的是阿里的fastjson包
@ResponseBody
@PostMapping("/create")
public void GetOrder(@RequestParam("goodsList") String goodsList){
if(StringUtils.isNotEmpty(goodsList)){
JSONArray createArray=JSONArray.parseArray(goodsList);
for(int i=0;i<createArray.size();i++){
Long goods_id=JSONObject.parseObject(JSONObject.toJSONString(createArray.get(i))).getLong("goods_id");
String goods_number=JSONObject.parseObject(JSONObject.toJSONString(createArray.get(i))).getString("goods_number");
String goods_price=JSONObject.parseObject(JSONObject.toJSONString(createArray.get(i))).getString("goods_price");
}
}
}
- 小程序端自己写的request
//同时发送异步代码的次数
let ajaxTimes = 0;
export const request=(params)=>{
//每次请求加一次
ajaxTimes++;
//显示加载中效果
wx.showLoading({
title: "加载中",
mask: true,
});
//定义公共的url
const baseUrl = "http://localhost:8081/v1/api";
return new Promise((resolve,reject)=>{
wx.request({
...params,
url:baseUrl+params.url,
success:(result)=>{
resolve(result);
},
fail:(err)=>{
reject(err)
},
complete: ()=>{
//每次请求减去一次
ajaxTimes--;
if(ajaxTimes===0){
//关闭正在等待加载的图标
wx.hideLoading();
}
}
});
})
}