Chrome浏览和angular2代码中的HTTP响应看起来不同

时间:2018-04-22 02:45:50

标签: angular http

我做了一个简单的POST:

this.http.post(<config>)
    .subscribe((response) => {
console.log(response)})

在Chrome浏览器网络标签中,我将其视为二进制文件。 在控制台中,我将其视为JSON。 那么真正的反应类型是什么?二进制或JSON。那时我无法保存那个二进制文件。我需要添加到请求主体吗?无论我的帖子请求是什么,为什么它在Chrome中看起来有所不同?

1 个答案:

答案 0 :(得分:0)

为了使这一切变得简单并使响应体正确,这里是一个post请求的示例实现 - &gt;

constructor(private _http: Http) {
        this.handleError = this.handleError.bind(this);
    }

    public PostData(data: any): Observable<any> {


                //Check if you need access tokens. Usually posts need access tokens. 
                 let access_token: string = "";

                let url: string = "https://YourPostDataUrl/PostdataEndPoint";
                let headers = new Headers({
                    'Authorization': 'Bearer ' + access_token,
                    'Content-Type': 'application/json'
                });

                let options = new RequestOptions({ headers: headers });

                return this._http.post(url, data, options)
                    .map(res => res.json())
                    .catch(this.handleError)

    }

要访问此方法,请参阅示例方法 -

saveEvent(): void{

  this._serviceProvider.PostData(this.data)
  .subscribe(data => {
    console.log(JSON.stringify(data));
    //Show Some Message. Say pop a dialog/modal confirming the data save.
  })

另外,对于您在Chrome控制台上的回复 - 如评论中所述 - 通过网络和网络,内容是HTTP。但是,设置用于处理它的每种媒介 - 例如浏览器 - 都可以解释为通用格式,例如, JSON。这是n / w选项卡(前者)和浏览器控制台(后者)之间的区别。

********更新以响应未绑定的回调评论**************' 注释引用的是事件处理程序回调通常作为函数调用,而不是作为方法调用。这意味着此类回调的表达式计算为undefined或全局对象。因此,使用ES6类方法作为回调意味着该方法的表达式不引用类实例。

使用对回调事件处理程序显式绑定到 this 的构造函数的引用更新了代码。