$http エラーを正常に処理しようとすると問題が発生します。サーバーのリストをループして、ステータスの API 呼び出しを行っています。完全に正常に完了した呼び出し。失敗したものは、エラー情報へのアクセスを許可していません。常に未定義です。コード スニペットは次のとおりです。
angular.forEach($scope.servers, function (server) {
// blank out results first
server.statusResults = {};
$http.jsonp(server.url + '/api/system/status?callback=JSON_CALLBACK', {headers: { 'APP-API-Key': server.apiKey }}).
success(function (data, status, headers, config) {
server.statusResults = data;
}).
error(function (data, status, headers, config) {
// data is always undefined here when there is an error
console.error('Error fetching feed:', data);
});
}
);
コンソール出力には、正しい 401 エラー (私は出力していません) と、未定義のデータ オブジェクトを含むコンソール エラー メッセージ (私が出力しました) が表示されます。
GET https://server_address/api/system/status?callback=angular.callbacks._1 401 (Unauthorized) angular.min.js:104
Error fetching feed: undefined
私がやろうとしているのは、Angular がログに 401 を表示するのではなく、適切な方法で表示することです。ただし、データは定義されていないため、情報にアクセスする方法がありません。
私は AngularJS を初めて使用しますが、私の例は、ドキュメントで見つけた他の例とほぼ一致しています。
$http の代わりに $resource を使用してみましたが、まったく同じ問題が発生しました。
var statusResource = $resource(server.url + '/api/system/status', {alt: 'json', callback: 'JSON_CALLBACK'},
{ status: {method: 'JSONP'}, isArray: false, headers: { 'APP-API-Key': server.apiKey } });
// make status API call
statusResource.status({}, function (data) {
server.statusResults = data;
}, function (err) {
// data is always undefined here when there is an error
console.log(err);
});
私はおそらく明らかに間違ったことをしていますが、他に何を試すべきかわかりません。