1

(これは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 がなくても正常に動作します。)

だから私の質問は、サーバーからの実際の戻り値と、実行されなかったと主張する関数にあった実際の説明的なエラーメッセージを表示するにはどうすればよいですか?

ありがとう!

4

0 に答える 0