所以我想按照aurelia docs提出这个帖子请求:http://aurelia.io/hub.html#/doc/article/aurelia/fetch-client/latest/http-services/3
这是请求:
httpClient.configure(config => {
config
.withBaseUrl(baseUrl)
});
this.client = httpClient;
this.client.fetch(`/api/Register/${userName}`, {
method: "post",
body: json(loginInformation),
headers: {
'Access-Control-Allow-Origin' : '*',
'Accept': 'application/json'
}
}) .then(response => this.safelyParseJSON(response))
.then(data => this.setup(data));
其中safetyParseJSON是:
safelyParseJSON(response) {
var parsed
try {
parsed = response.json();
} catch (e) {
}
return parsed
}
但我一直收到这个错误:
“uncaught(在promise中)SyntaxError:JSON输入的意外结束”
任何人都知道我做错了什么?
注意:我仅在从服务器接收404/500时收到此错误,如果结果正常,则此方法有效 .
注意2:我在try-catch中包装此函数但是这仍然不起作用,它不会捕获异常 .
注3:我试图替换这一行:
parsed = response.json();
用这一行:
parsed = JSON.parse(response);
但是响应总是未定义的 .
2 回答
在调用
.json()
之前检查响应的状态:我最后使用了Jeremy Danyow的回答,只做了一个小改动:
在我的情况下添加response.status检查是必要的,因为对于状态代码204(无内容),response.ok也是如此 .