Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用axios请求将422错误拆分为字段/错误?_Javascript_Vuejs3 - Fatal编程技术网

Javascript 如何使用axios请求将422错误拆分为字段/错误?

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保存数据的vuejs3应用程序中,当我遇到422验证错误时 我试图捕捉它并向消息显示哪些字段无效。我试着读懂error responce onject, 但失败了。我喜欢:

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"