12

質問

jQueryで扱うグローバルなajaxの設定をしたい

調子:

ajax URL が「www.example.com」の場合、データ (クエリ文字列または本文) にトークンが追加されます。


私は2つの方法を試しました

.ajaxPrefilter

$.ajaxPrefilter( function( options, originalOptions, jqXHR ) {

    // Add data to ajax option
    if (options.url.match(/www\.example\.com/i) !== null) {
        originalOptions.data.token = 'i_am_token'
    }

});

URL が www.example.com の場合にトークンを追加するには -> 機能しません!

コンソール/デバッガーでは、originalOptions オブジェクトに token プロパティが追加されていますが、token パラメーターを持たないリクエストが送信されました

.ajaxSetup / beforeSend イベント

$.ajaxSetup({
    beforeSend: function(jqXHR, settings) {

        // Only GET Method
        if (settings.url.match(/www\.example\.com/i) == null){
            settings.url.replace(/((\.\/[a-z][0-9])*\?+[=%&a-z0-9]*)&?token=[a-z0-9]*&?([=%&a-z0-9]*)/gi, "$1$3")
        }

    },
    data: {
        token: 'i_am_token'
    }
});

逆の解決策として、ajax リクエストごとにトークンを追加します。

前のものと同じ、コンソール/デバッガーの文字列置換によって settings.url が変更されました。しかし、リクエストはまだ元の URL を送信しました。


jsfiddle でのテスト: http://jsfiddle.net/qVLN2/2/

読んで助けてくれてありがとう:)

4

1 に答える 1