Unexpected token < in JSON at position 80 at JSON.parse (<anonymous>)

Posting a screenshot of your desktop is one of the impolitest things you can do.

Please post the error message as text, include your ionic info output, what code you are running and what JSON the server is returning that causes this error.

lo que muestra en la consola
Notice: Undefined index: Correo in C:\xampp\htdocs\final_slim\api\app\route\auth_route.php on line 13



Notice: Undefined index: Password in C:\xampp\htdocs\final_slim\api\app\route\auth_route.php on line 13

y la linea 13 lo que tengo en el json_encode

$app->group(’/auth/’, function () {
$this->post(‘autenticar’, function ($req, $res, $args) {
$parametros = $req->getParsedBody();

    return $res->withHeader('Content-type', 'application/json')
               ->write(
                 json_encode($this->model->auth->autenticar($parametros['Correo'], $parametros['Password']))
               );
});

});

Your PHP is broken. $parametros[‘Correo’], $parametros[‘Password’] both do not exist, so the code doesn’t work.

en el formulario si le quito la etiqueta funciona todo bien , este código lo e usado en otros proyectos y todo bien, pero cuando lo pase ionic v 1 me encontrado con este error .
este es el codigo de mi service que tiene toda la lógica para consumir mi REST API
gracias por la ayuda

angular.module(‘app.services’, [])

.factory(‘auth’, [’$state’, function ($state) {
var auth = {
setToken: function (token) {
window.localStorage[API.token_name] = token;
},
getToken: function () {
return window.localStorage[API.token_name];
},

    getUserData: function () {
        console.log(auth);
        try{
            var token = window.localStorage[API.token_name];
            if (token === '') return;

            var base64Url = token.split('.')[1];
            var base64 = base64Url.replace('-', '+').replace('_', '/');
            console.log()
            return JSON.parse(window.atob(base64)).data;                
        } catch(err) {
            $state.go('signup');
        }
    },
    logout: function () {
        window.localStorage[API.token_name] = '';
        $state.go('signup');
    },
    hasToken: function () {
        return (window.localStorage[API.token_name] !== '');
    },
    redirectIfNotExists: function () {
        if (!auth.hasToken()) {
            $state.go('signup');
        }
    }
};
     
return auth;

}])

.service(‘loader’, function () {
this.show = function (show) {
document.querySelector("#loader").style.display = show ? ‘block’ : ‘none’;
};
})

.service(‘restApi’, [’$http’, ‘loader’, ‘auth’, function ($http, loader, auth) {
this.call = function (config) {

    var headers = {};
    headers[API.token_name] = auth.getToken();


    loader.show(true);
      
    var http_config = {
        method: config.method,
        url: API.base_url + config.url,

        data: typeof (config.data) === 'undefined' ? null : config.data,
        headers: headers
    };


    $http(http_config).then(function successCallback(response) {
        loader.show(false);
        config.response(response.data);

    }, function errorCallback(response) {
        loader.show(false);

        switch (response.status) {
            case 401: // No autorizado
                auth.logout();
                break;
            case 422: // Validación
                config.validationError(response.data);
                break;
            default:
                config.error(response);
                console.log(response.statusText);
                break;
        }
    });
};

}])

Please edit your post, it is not very readable at the moment.
Use the </> button above the input field to format your code, command line output or error message (select the text first, then click the button or wrap it in ``` manually). Check the preview if it looks better. This will make sure your text is readable and if it recognizes the programming language it also automatically adds code syntax highlighting. Thanks.

funciona bien si le quito la etiqueta “ion-content”

este es mi codigo de mi services

angular.module('app.services', [])

.factory('auth', ['$state', function ($state) {
    var auth = {
        setToken: function (token) {
            localStorage[API.token_name] = token;
        },
        getToken: function () {
            return localStorage[API.token_name];
        },

        getUserData: function () {
            console.log(auth);
            try{
                var token = localStorage[API.token_name];
                if (token === '') return;

                var base64Url = token.split('.')[1];
                var base64 = base64Url.replace('-', '+').replace('_', '/');
                console.log()
                return JSON.parse(window.atob(base64)).data;                
            } catch(err) {
                $state.go('signup');
            }
        },
        logout: function () {
            localStorage[API.token_name] = '';
            $state.go('signup');
        },
        hasToken: function () {
            return (localStorage[API.token_name] !== '');
        },
        redirectIfNotExists: function () {
            if (!auth.hasToken()) {
                $state.go('signup');
            }
        }
    };
         
    return auth;
}])

.service('loader', function () {
    this.show = function (show) {
        document.querySelector("#loader").style.display = show ? 'block' : 'none';
    };
})

.service('restApi', ['$http', 'loader', 'auth', function ($http, loader, auth) {
    this.call = function (config) {
        
        var headers = {};
        headers[API.token_name] = auth.getToken();


        loader.show(true);
          
        var http_config = {
            method: config.method,
            url: API.base_url + config.url,

            data: typeof (config.data) === 'undefined' ? null : config.data,
            headers: headers
        };


        $http(http_config).then(function successCallback(response) {
            loader.show(false);
            config.response(response.data);

        }, function errorCallback(response) {
            loader.show(false);

            switch (response.status) {
                case 401: // No autorizado
                    auth.logout();
                    break;
                case 422: // Validación
                    config.validationError(response.data);
                    break;
                default:
                    config.error(response);
                    console.log(response.statusText);
                    break;
            }
        });
    };
}])