(これはjqueryのバグかもしれないと思いますが、よくわかりません)
次のように jQuery で ajax 呼び出しを行う場合:
$.ajax({
type: "GET",
url: url,
dataType: "json",
crossDomain: true
}).done((result) => {
if (result == null) {
d.resolve();
return;
} else if (result.Results != null) {
if (!$.isArray(result.Results)) {
d.resolve([result.Results]);
return;
} else {
d.resolve(result.Results);
return;
}
} else {
if (!$.isArray(result)) {
d.resolve([result]);
return;
}
}
d.resolve(result);
}).fail((e, description, error) => {
d.reject(error);
});
したがって、サーバーが 404 または 403 などを返すと、fail 関数が呼び出されます。しかし、サーバーはRESTであるため、何も見つからない場合は正しく、「見つかりません」が返されますが、本文にエラーの説明も含まれます。
奇妙なことに、fail メソッドの jQuery の e プロパティ (はい、typescript ですが、regular も同じです) には、失敗したにもかかわらず、e.status == 200 と statusText = "success" があります。ステータスの値は 403 または 404 である必要があり、responseText は返されたものである必要があります。
(これはすべて、jsonp がなくても正常に動作します。)
だから私の質問は、サーバーからの実際の戻り値と、実行されなかったと主張する関数にあった実際の説明的なエラーメッセージを表示するにはどうすればよいですか?
ありがとう!