2017-10-07 25 views
-1

I kept getting the error in the title of this post. So I removed my .json() from response.json() my below code return this.http.post('http://localhost:3000/sign-up', body, {headers: headers}) .map((response: Response) => response.json()) However, now I am getting as an error::予期しないトークンを<JSONに位置0にJSON.parse(<anonymous>)

Response {_body: "<!DOCTYPE html>↵<html lang="en">↵<head>↵ <base …src="/js/app/bundle.js"></script>↵</body>↵</html>", 

私はウェブ開発に新しいです、と私は私が撮ったオンラインコースからのコードを使用しようとしています。私は私のconsole.logがオブジェクトであり、この 'Response'ではないことを知っています。返されたデータをHTMLフォームから送信した情報にするにはどうすればよいですか?

また、私は元のコードをUnexpected token < in JSON at position 0 at JSON.parse (<anonymous>)エラーにする方法を示しています。私が言ったようにしかし、私はその.jsonを削除()とResponse {_body: "<!DOCTYPE html>↵<html lang="en">↵<head>↵ <base …src="/js/app/bundle.js"></script>↵</body>↵</html>",エラー

import { Injectable } from "@angular/core"; 
import { Http, Headers, Response } from "@angular/http"; 
import 'rxjs/Rx'; 
import { Observable } from "rxjs"; 

import { User } from "./user.model"; 
import { ErrorService } from "../errors/error.service"; 

@Injectable() 
export class AuthService { 
    constructor(private http: Http, private errorService: ErrorService) {} 

    signup(user: User) { 
     const body = JSON.stringify(user); 
     const headers = new Headers({'Content-Type': 'application/json'}); 
     return this.http.post('http://localhost:3000/sign-up', body, {headers: headers}) 
      .map((response: Response) => response.json()); 
      // .catch((error: Response) => { 
      //  this.errorService.handleError(error.json()); 
      //  return Observable.throw(error.json()); 
      // }); 
    } 
} 
あなたのコード中に問題があなたが戻って取得しているコンテンツである

Next Class

import { Component, OnInit } from "@angular/core"; 
import { FormGroup, FormControl, Validators } from "@angular/forms"; 

import { AuthService } from "./auth.service"; 
import { User } from "./user.model"; 

@Component({ 
    selector: 'app-signup', 
    templateUrl: './signup.component.html' 
}) 
export class SignupComponent implements OnInit { 
    myForm: FormGroup; 

    constructor(private authService: AuthService) {} 

    onSubmit() { 
     const user = new User(
      this.myForm.value.email, 
      this.myForm.value.password, 
      this.myForm.value.firstName, 
      this.myForm.value.lastName, 
      this.myForm.value.age, 
      this.myForm.value.goal 
     ); 
     this.authService.signup(user) 
      .subscribe(
       data => console.log(data), 
       error => console.error(error) 
      ); 
     this.myForm.reset(); 
    } 

    ngOnInit() { 
     this.myForm = new FormGroup({ 
      firstName: new FormControl(null, Validators.required), 
      lastName: new FormControl(null, Validators.required), 
      email: new FormControl(null, [ 
       Validators.required, 
       Validators.pattern("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?") 
      ]), 
      password: new FormControl(null, Validators.required), 
      age: new FormControl(null, Validators.required), 
      goal: new FormControl(null, Validators.required) 
     }); 
    } 
} 
+0

おそらくサーバーはnullを返します。これはjsonに解析できません。 – NiVeR

+0

私はあなたがhtmlコンテンツを持つプレーンテキストを取得しており、それをjson文字列として扱おうとしていると思います。 –

+0

もう少し精巧にお考えですか?私が言ったように、私はウェブ開発のまったく新しいものなので、このような変更方法はわかりません。ありがとう! – XXIV

答えて

0

は、あなたがHTMLコンテンツを受信して​​いるのですjsonのコンテンツが必要です。代わりにjsonを返すようにサーバーを構成するか、HTML応答を処理するようにコードを修正するだけです。

+0

なぜ 'response.json()'がこれを達成しないのでしょうか? – XXIV

+0

'.json()'関数は、 'JSON'表記でフォーマットされた文字列を' JSON'オブジェクトに変換する責任があります。 'JSON'形式ではありません。したがって、 '.json()'関数は 'JSON'オブジェクトに変換できませんでした。 –

+0

しかし、' const body = JSON.stringify(user); 'はあなたの参照する' JSON'でフォーマットされた文字列ではありませんか?それから、私は '.json()'を呼んだ。 – XXIV

関連する問題