Javascript 如何使用axios请求将422错误拆分为字段/错误?
在使用axios保存数据的vuejs3应用程序中,当我遇到422验证错误时 我试图捕捉它并向消息显示哪些字段无效。我试着读懂error responce onject, 但失败了。我喜欢:Javascript 如何使用axios请求将422错误拆分为字段/错误?,javascript,vuejs3,Javascript,Vuejs3,在使用axios保存数据的vuejs3应用程序中,当我遇到422验证错误时 我试图捕捉它并向消息显示哪些字段无效。我试着读懂error responce onject, 但失败了。我喜欢: axios.put(requestUrl, currencyData, credentials).then(({data}) => { isPageUpdating.value = false showPopupMessage('Currency Editor', 'Currency u
axios.put(requestUrl, currencyData, credentials).then(({data}) => {
isPageUpdating.value = false
showPopupMessage('Currency Editor', 'Currency updated successfully !', 'success')
router.push({path: '/admin/currencies'})
}).catch((error) => {
if (error.response.status === 422 ) {
console.log('error.response.data:::')
console.log(error.response.data)
console.log('error.response.data.errors:::')
console.log(error.response.data.errors)
console.log(typeof error.response.data.errors)
if (typeof error.response.data.errors === 'object') {
let errorsArray = Object.values(error.response.data.errors)
let errStr = ''
errorsArray.map((errorField, errorKey) => {
console.log('errorField::')
console.log(errorField)
console.log(typeof errorField)
console.log('errorKey::')
console.log(errorKey)
console.log('errorsArray[errorKey]::')
console.log(errorsArray['errorKey'])
})
showPopupMessage('Currency Editor', errStr, 'warn')
}
return
}
})
我试图在上面的errStr中获取错误文本,但失败了
我在浏览器的控制台中看到:
如何以文本形式获取无效字段/错误列表
谢谢 看起来您正试图从
数据.errors
对象中获取一个值数组
let errorsArray=Object.values(error.response.data.errors)
和data.errors看起来像:
{
“名称”:[“错误1”,“错误2”]
}
如果您试图在data.errors
的键上循环,它将不起作用
errorsArray.map((errorField,errorKey)=>{}
因为Object.values
返回一个数组,其中键/索引是一个数字[0..]
这就是为什么你的errorKey
为0
如果要从名称字段中查找错误,可以执行以下操作
let errorsArray=Object.values(error.response.data.errors.name)
但是如果键是字段的名称
让errorsKeysArr=Object.keys(error.response.data.errors)
errorsKeysArr.map((键)=>{
const errorField=error.response.data.errors[key]
...
})
谢谢!拆分字符串错误文本并将其显示在消息函数中是很有用的。还有,是否有办法在字段定义中显示此错误?或者换句话说,将此错误放入验证错误堆栈中?
"axios": "^0.20.0-0",
"vue": "^3.0.0",
"yup": "^0.29.3"