1

ajax 成功コールバックが実行される前に、サーバーからのデータを傍受して変更したい

私はこのコードを持っています:

    jquery.ajaxPrefilter(function (options, originalOptions, jqXHR) {
        // Modify options, control originalOptions, store jqXHR, etc
    });

同等のものを希望します:

    jquery.ajaxPostfilter(function (dataComingFromServer) {

        dataComingFromServer.applyMyModifications();
    });

ただし、 ajaxPostfilter は存在しません-イベントハンドラーに到達する前にサーバーからの応答を傍受する別の方法はありますか:

この質問はこれに関連していますが、答えはありませんでした: イベントハンドラーの前に jQuery で ajax 応答をインターセプトするにはどうすればよいですか?

4

2 に答える 2

1

イベント ハンドラーの前にサーバーから返されるデータを処理する場合は、datafilter を使用します。

jquery.ajaxSetup({
    dataFilter: function (data, type) {
        //modify the data

        return data;
    }
});
于 2016-04-11T13:40:38.830 に答える
1

標準化された関数を使用して特定のコールバックの前にデータを変更する場合は、次のようなパターンを使用できます。

// Boilerplate to modify your data
function preprocess(data){
    data.foo = "bar";
    return data;
}

// Your specific handlers
function logdata(data){
    console.log(data);
}
function writedata(data){
    document.write(data);
}

// AJAX requests
$('#foo').load('url1', function(data) {
    logdata(preprocess(data));
});
$('#bar').load('url2', function(data) {
    writedata(preprocess(data));
});

もちろん、これは従来の をラップするメソッドに焼き付けて、.ajaxより使いやすくすることができます。

dataFilterKevinB によって指摘されたオプションも同様の目的を果たしますが、メソッドに限定されていることに注意してください.ajax。AJAX リクエストにグローバル フィルタを設定する場合は、次を使用します。

$.ajaxSetup({
    dataFilter: preprocess
});
于 2013-01-04T21:17:08.697 に答える