Axios 0.17.1
.then(function (response) { console.log(response); //console.log(response.status); //It is an error -> SyntaxError: Unexpected token u in JSON at position 0 console.log(JSON.parse(response.data.error)); console.log(response.data.error); //undefined.El console.log de respuesta es
{data: "{"error":"Se debe ingresar el nombre con más de uno... NULL↵
["isPipe":protected]=>↵ NULL↵ }↵}↵", estado: 203, texto de estado: "Información no autorizada", encabezados: {…}, config: {…}, …} config: {adaptador: ƒ, transformRequest: {…}, transformResponse: {…}, timeout: 0, xsrfCookieName: "XSRF-TOKEN", …} data : "{"error":"El nombre debe ingresarse con más de un carácter".}objeto (Slim\Http\Response)#32 (5) {↵ ["status":protected]=>↵ int(200)↵ ["reasonPhrase":protected]=>↵ string(0) ""↵ ["protocolVersion" :protected]=>↵ string(3) "1.1"↵ ["headers":protected]=>↵ object(Slim\Http\Headers)#33 (1) {↵
["data":protected]=>↵ array(1) {↵ ["content-type"]=>↵
matriz(2) {↵ ["valor"]=>↵ matriz(1) {↵ [0]=>↵
cadena(24) "texto/html; juego de caracteres=UTF-8"↵ }↵
["originalKey"]=>↵ string(12) "Content-Type"↵ }↵ }↵ }↵ ["body":protected]=>↵ object(Slim\Http\Body)#31 (7) {↵
["stream":protected]=>↵ recurso(59) de tipo (stream)↵
["meta":protegido]=>↵ NULL↵ ["legible":protegido]=>↵ NULL↵
["escribible":protegido]=>↵ NULL↵ ["buscable":protegido]=>↵
NULL↵ ["tamaño":protegido]=>↵ NULL↵ ["isPipe":protegido]=>↵
NULL↵ }↵}↵" encabezados: {tipo de contenido: "application/json;charset=utf-8"} solicitud: XMLHttpRequest {onreadystatechange: ƒ, readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, …} status : 203 statusText : "Información no autorizada" proto : Objeto
JSON.parse(response.data) así como response.data.error -> Ambos están dando error. ¿Cómo puedo leer los datos?
Estructura delgada 3.
$data = array('error' => 'Name must be entered with more than one character.'); $newResponse = $response->withJson($data, 203); return $newResponse;En Axios, las respuestas ya se sirven como objetos javascript, no es necesario analizar, simplemente obtenga la respuesta y acceda a los datos.
Suponiendo que la respuesta del servidor se vea así:
{"token": "1234567890"}Luego, en Axios, puede acceder a él de esta manera:
console.log( response.data.token )Tuve una respuesta de formato similar a la del registro de la consola y mi problema era que mi archivo .json no estaba formateado correctamente. Me faltaba una coma. Publique su archivo json para echar un vistazo.