Angular2 POST Observable Request返回一个不可读的JSON对象
我使用一个Angular2的POST请求与Observable到Node API。 我不断收到一个奇怪的JSON对象作为响应。
来自Node API应用程序的响应 – 通过Chrome控制台:
{"_isScalar":false,"source":{"_isScalar":false,"source": {"_isScalar":false,"source":{"_isScalar":false},"operator": {"delay":500,"scheduler":{"actions":[],"active":false}}},"operator": {}},"operator":{"caught":"[Circular]"}}
Angular2代码:
login2(): Observable<any> { this.url = 'http://localhost:3080/user/login'; this.obj.email = 'jhon.doe@foo.de'; this.obj.password = 'pass'; let formObj = this.form.getRawValue(); let serializedForm = JSON.stringify(formObj); let headers = new Headers({ 'Content-Type': 'application/json' }); let options = new RequestOptions({ headers: headers }); var obsRequest = this.http.post(this.url, this.obj, options) .map(res => res.json()) .catch( (error: any) => Observable.throw(error.json().error || 'Server error') ); console.log(JSON.stringify(obsRequest, this.avoidCircular(obsRequest))); return obsRequest; }
PS avoidCircular
是javaScript内置avoidCircular
的额外解决方法,当我不使用它时会得到以下错误:
TypeError: Converting circular structure to JSON
avoidCircual代码:
avoidCircular(objCens) { var i = 0; return function(k, v) { if(i !== 0 && typeof(objCens) === 'object' && typeof(v) == 'object' && objCens == v) return '[Circular]'; if(i >= 29) return '[Unknown]'; ++i; return v; } }
API调用通过邮差工作正常!
任何想法如何解决这个问题?
obsRequest
不是来自您的请求的响应,而是请求可观察的。 为了收到回复,你需要subscribe
它。
var obsRequest = this.http.post(this.url, this.obj, options) .map(res => res.json()) .catch( (error: any) => Observable.throw(error.json().error || 'Server error') ); obsRequest.subscribe((response)=> console.log(response));
我build议你阅读官方文档的http模块: https : //angular.io/guide/http
- 使用Node Express和Passport捕获锚链接/路由
- Webpack – 如何在基础HTML中要求结果文件(最佳实践)
- 如何在没有Cookie的情况下在SPA中使用第三方authentication服务?
- 如何使用node.js比symfony更好地应对前端?
- 我的第一个Node.js服务器:无法加载资源:net :: ERR_INCOMPLETE_CHUNKED_ENCODING
- 为Node.js服务器+ SPA javascript框架设置自动化BDDtesting环境的简单方法?
- 在服务器和客户端上渲染Backbone.js应用程序
- 预期的响应包含一个数组,但有一个对象
- 为什么使用Bower.js如果npm工作正常?