Как получить данные в post axios response php next.js ?

#javascript #axios

#javascript #axios

Вопрос:

это ответ на сообщение axios, который я пытался получить, чтобы получить текст ошибки в ответе на сообщение axios, с которого я начинаю (Res .request.response) Это дает объект в объекте в объекте, когда я пошел добавлять .data его стало undefined .

 {data: {…}, status: 200, statusText: "OK", headers: {…}, config: {…}, …}
  config: {url: "https/v1/user/login", method: "post", data: "{"email":"09@gmail.com","password":"it"}", headers: {…}, transformRequest: Array(1), …}
  data: {success: true, statusCode: 200, data: {…}}
  headers: {access-control-allow-headers: "x-requested-with, Content-Type, origin, authorization, accept, client-security-token", access-control-allow-methods: "POST, GET, OPTIONS, DELETE, PUT", access-control-allow-origin: "*", access-control-max-age: "1000", connection: "keep-alive", …}
  request: XMLHttpRequest
  onabort: ƒ ()
  onerror: ƒ ()
  onload: null
  onloadend: null
  onloadstart: null
  onprogress: null
  onreadystatechange: ƒ ()
  ontimeout: ƒ ()
  readyState: 4
  response: "{"success":true,"statusCode":200,"data":{"errors":{"password":["Incorrect email or password"]}}}"
  responseText: "{"success":true,"statusCode":200,"data":{"errors":{"password":["Incorrect email or password"]}}}"
  responseType: ""
  responseURL: "https://cors-anywhere.herokuapp.com/https://api.wodworx.com/v1/user/login"
  responseXML: null
  status: 200
  statusText: "OK"
  timeout: 0
  upload: XMLHttpRequestUpload {onloadstart: null, onprogress: null, onabort: null, onerror: null, onload: null, …}
  withCredentials: false
  __proto__: XMLHttpRequest
  status: 200
  statusText: "OK"
  

когда я пытаюсь console.log (Res .request.response)
это результат

{"success":true,"statusCode":200,"data":{"errors":{"password":["Incorrect email or password"]}}}

Как я могу выполнить итерацию, чтобы получить этот результат: Incorrect email or password

Комментарии:

1. Поместите то, что вы пробовали

2. Я отредактировал сообщение

3. Лучше использовать перехватчики axios и использовать оператор catch в операторе try-catch.

4. я не хочу перехватывать ошибку, мне нужно только это значение «Неверный адрес электронной почты или пароль»

5. Res.request.response.data.errors.password[0]

Ответ №1:

Уверен, что вы пропускаете data здесь.

Попробуйте Res.request.response.data.data.errors.password.join('n')

Это .join(‘n’) необязательно. Вы можете заменить его на ...password[0] .


Если вы хотите немного научиться, вот как я подхожу к изучению этого объекта. Это своего рода набор навыков сам по себе.

Давайте попробуем.

Из того, что вы напечатали выше ( Res.request.response ), я сделал следующее:

 let respData = JSON.parse('{"success":true,"statusCode":200,"data":{"errors":{"password":["Incorrect email or password"]}}}');

console.log(respData.data.errors.password.join('n'));
// logs: "Incorrect email or password"
  

Это сработало.

Обратите внимание, консоль.журнал заключает данные в кавычки, указывающие на их тип string.

Глядя на Res.request.data , вокруг него нет кавычек. Это выглядит как объект. Угадывание axios уже вызвано JSON.parse по значению.

Поскольку Res.request.response и Res.request.data находятся на одном уровне в объекте, может показаться, что Res.request.data === {success: true, statusCode: 200, data: {…}} .

Чтобы получить нужные данные, вам нужно вызвать Res.request.data.data , чтобы получить доступ к этой части ответа.

Другими словами:

 let responseData = Res.request.data;
responseData.success === true
let errors = responseData.data.errors
let firstPasswordError = errors.password[0]
  

Если это не поможет, дайте мне знать.