【发布时间】:2017-07-11 07:54:25
【问题描述】:
在将 Angular 应用程序与 asp.net MVC 合并后,从 Angular 调用 API 返回一个空 JSON。
angular和asp.net在同一个域中。
如果我使用 PostMan 调用 API,我会得到一个带有结果的 JSON。但如果我在 Angular 应用程序中调用它,我的 JSON 结果为空。
在同一域中合并和服务后,有没有使用asp.net MVC通信角度应用程序的提示?
更新 1:
调用Webservice的代码:
getSheets(): Observable<Sheet[]> {
return this.http.get(this.config.apiUrl + '/api/SheetsRelationAPI',
this.jwt())
.map(this.extractData)
.do(data => console.log('SheetsData:', data)) // debug
.catch(this.handleError);
}
/**
* Handle HTTP error
*/
private handleError(error: any) {
// In a real world app, we might use a remote logging infrastructure
// We'd also dig deeper into the error to get a better message
const errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
}
// private helper methods
private jwt() {
// create authorization header with jwt token
const currentUser = JSON.parse(atob(this.cookie.getCookie('currentUser')));
if (currentUser && currentUser.access_token) {
const headers = new Headers({ 'Authorization': 'Bearer ' + currentUser.access_token},
);
return new RequestOptions({ headers: headers });
}
}
private extractData(res: Response) {
const body = res.json();
return body || [];
}
更新 2:
我注意到如果我从外部域调用我的 API,它会响应 2 次:
使用谷歌浏览器检查元素检查网络:
第一个响应是“zone.js”发起者,第二个响应是“其他”发起者
如果我从域内部调用 API,我只会收到来自“zone.js”发起者的响应,它会返回一个空 JSON。
更新 3
export class OtherComponent implements OnInit {
sheets: Sheet[] = [];
errorMessage: string;
constructor(private httpService: HttpService) {
// this.sheets = this.ichartHttp.getSheets();
// console.log(this.sheets);
}
getSheets() {
this.httpService.getSheets()
.subscribe(
sheets => this.sheets = sheets,
error => this.errorMessage = <any>error
);
}
ngOnInit() {
this.getSheets();
}
}
【问题讨论】:
-
你用来调用网络服务的新角码是什么?
-
@Unlockedluca 我更新了我的问题
-
你在哪里调用
getSheets()方法? -
在调用 getsheets 方法的我的 OtherComponent 中
-
也许你也可以分享一下。因为这部分看起来不错。
标签: asp.net json asp.net-mvc angular