本人小白,仅记录平时的错误
反复检查,最终是post的参数格式有错误
错误代码👇
// 这里有shopId
const shopId = parseInt(route.params.id, 10)
// 这里有shopName
const shopName = computed(() => {
const shopName = cartList[shopId]?.shopName || ''
return shopName
})
// 发送请求
const handleConfirmOrder = async () => {
// 这里有products
const products = []
for (const i in productList.value) {
const product = productList.value[i]
products.push({ id: product._id, num: product.count })
}
// console.log(products)创建的products数据用在下面
try {
const result = await post('/api/order', {
addressId: 1,
shopId,
shopName,
isCanceled: false,
products
})
// console.log(result) 这里打印不出来
} catch (e) {
alert('请求失败')
}
}
// 这里的post是用axios封装的post
当时一脸懵逼,我明明发送的是post请求,到这里怎么会变成了get请求了??
然后我各种度娘各种搜索,该用的方法试了一遍,还是没解决。。。
直到我看到这句话。。。在Vue中使用axios发送post请求时,可能会出现后端无法接收到参数的情况。这个问题的原因是axios默认发送的请求是json格式的。。。
突然灵光一闪,那就是我的参数!我错误的原因可能来自参数
于是我把所有的post参数都 console.log()一遍,只有shopName打印的是computed属性,所以shopName的值:要写成shopName.value
修改正确后👇
try {
const result = await post('/api/order', {
addressId: 1,
shopId,
shopName: shopName.value,//导致错误的原因来自这里
isCanceled: false,
products
})
} catch (e) {
alert('请求失败')
}
}