Angular2 HTTP POST Произошла ошибка SyntaxError: неожиданное завершение ввода JSON

#json #node.js #angular #typescript

#json #node.js #угловой #typescript

Вопрос:

У меня ошибка, тем временем angular2 отправляет данные rest в серверную часть NodeJS.

Я вижу, что сообщение выполнено, сервер регистрирует правильные данные, но в браузере отображается ошибка.

Произошла ошибка: SyntaxError: JSON.parse: неожиданный конец данных в строке 1 столбца 1 данных JSON

Мой вызов NG2 и служба:

 onSubmit(form:FormGroup) {
        let userform: FormGroup = form.value;
        console.log("userform: ", userform);

        if (form.valid) {
            console.log(form.value);
            this.appService.signIn(userform)  
                .subscribe(form => console.log('subscribe: ', form))
        } else {
            console.log("Form is not VALID!"); 
        }
    }
  

Обслуживание:

 signIn(dataUser: Object): Observable<User> {
   dataUser = JSON.stringify(dataUser);
   debugger;

    let headers = new Headers({
        'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': 'http://127.0.0.1:3005'
    });
    let options = new RequestOptions({ headers: headers });

    console.log("data: ", dataUser, "nHeaders: ", headers);

    return this.http
        .post( this.signInUrl, dataUser, options)
        .map( (res:Response) => res.json().data || {  } as User )
        .catch(this.handleError);

}
  

и NodeJS:

 app.post('/login', function (req, res) {
    console.log("Recived login request!");
    console.log("Request: ", req.body);
    res.header({
        'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE',
        'Accept': 'q=0.8;application/json;q=0.9'
    })
    res.end();
});
  

В post у нас есть: «{«имя пользователя»:»имя пользователя»,»пароль»:»пароль»}».

Что я делаю неправильно? Пожалуйста, за помощью или решением.

Ответ №1:

Awwwww. Это была моя ошибка, позаботьтесь о своем ответе сервера NodeJS. После получения POST должно быть отправлено любое res.json({status: "OK"}) или что-то подобное, чтобы получить ответ. Эта ошибка произошла не из-за Angular2, а из-за NodeJS. Браузер получает пустой ответ от NodeJS, или это не формат JSON.