4

Angular の最新リリース (v1.3.0) では、application/json の content-type ヘッダーの修正が追加されました。現在、有効な JSON ではないため、すべての応答でエラーが発生します。プレーン テキスト ヘッダーで応答するようにバックエンドを変更する必要があることはわかっていますが、現時点ではそれを制御できません。Angular が応答を解析する前に応答を事前に解析する方法はありますか?

これが彼らが行った修正だと思います: https://github.com/angular/angular.js/commit/7b6c1d08aceba6704a40302f373400aed9ed0e0b

私が抱えている問題は、バックエンドから取得した応答に、Angular がチェックしているものと一致しない保護プレフィックスがあることです。

構成に http インターセプターを追加しようとしましたが、それは役に立たず、Angular 自体の後で解析します。

$httpProvider.interceptors.push('parsePrefixedJson');

コンソールに表示されるエラー (Angular での JSON 文字列の逆シリアル化によるものです):

SyntaxError: Unexpected token w
at Object.parse (native)
at fromJson ...
4

2 に答える 2

1

これを Angular アプリに追加して、デフォルトのトランスフォーマーを変更する方法を見つけました。

app.run(['$http',
    function($http) {
        var parseResponse = function(response) {
            // parse response here

            return response;
        };

        $http.defaults.transformResponse = [parseResponse];
    }
]);

これはデフォルトの動作をオーバーライドします。選択した応答のみを変換する必要がある場合は、空の配列として設定することもできます。

この質問/回答を参照してください: AngularJS、$http、および transformResponse

于 2014-10-15T12:04:19.480 に答える