0

私はこの Web プロジェクトを始めたばかりです。タイプスクリプトが使用されています。私はこれを見ています:

$.ajax({
        type: method,
        url: url,
        xhrFields: {
            withCredentials: $.support.cors
        },
        crossDomain: $.support.cors,
        data: data,
        dataType: (this.options.fallbackMethod ? this.options.fallbackMethod : "json")
    }).then(
        (data, textStatus, jqXHR) => { if (typeof (successCallback) === "function") successCallback(data, textStatus, jqXHR); },
        (jqXHR, textStatus, errorThrown) => {
            console.log("ajax failed: ");
            console.log(errorThrown);
            console.log(jqXHR);
            console.log(textStatus);
            if (typeof (failCallback) === "function") failCallback(jqXHR, textStatus, errorThrown);
        }
    );

これは、サーバーにリクエストを送信したときに呼び出されます。サーバーから不適切なリクエストを受け取ると、Firebug と Fiddler で、サーバーがエラー コード (400 など) とエラー メッセージ (「リソースが見つかりませんでした」) を含む JSON オブジェクトを送り返していることがわかります。 .

私が理解していないのは、その JSON オブジェクトを取得して解析できるようにする方法です。すべてのパラメーター (errorThrown、jqXHR、textStatus) をログに記録すると、JSON を取得する方法がないようです。メッセージとエラー コードが文字列にまとめられた responseText プロパティが表示されますが、JSON オブジェクトは表示されません。dataTypeこのメソッドが呼び出される前に、実際に json であることを確認するためにチェックを行いました。何かご意見は?前もって感謝します。

4

2 に答える 2

0

jqXHR オブジェクトの「responseText」プロパティを介して JSON データを取得できるはずです。以下の短い例は、「エラー」イベントを使用してこれを行う ajax リクエストです。

$.ajax({
    url: 'http://somewhere...',
    data: { somedata: 'somevalue' },
    type: 'POST',
    error: function (jqXHR, statusText, errorThrown) {
        // get the JSON here:
        var data = JSON.parse(jqXHR.responseText);
    }
});
于 2013-05-16T02:31:09.813 に答える