JQuery ajax переписать данные /url перед отправкой по определенному URL-адресу

Вопрос

Я хочу установить параметр ajax для глобального ajax, обрабатываемого jQuery

Состояние:

Если ajax url является "www.example.com", данные (querystring или body) будут добавлять токен.


Я попробовал два метода

.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 Object добавлено свойство token, но запрос отправлен без параметра токена

.ajaxSetup/beforeSend Event

$.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/

Спасибо за ваше чтение и помощь:)

Ответ 1

Вы должны заметить, что функция String.replace не влияет на исходную строку!

Вы можете попробовать использовать settings.url = settings.url.replace(....); в своем коде.