Подтвердить что ты не робот

Как получить текущее значение из jQuery ajaxSetup

У меня есть страница, которая по запросу пользователя открывает диалоговое окно и загружает в него внешний файл с использованием метода jQuery load().

Внешний файл содержит ссылки на скрипты (он также может работать как отдельная страница), и это прекрасно, только тот jQuery заставляет эти сценарии загружаться (добавив метку времени), даже если они уже были загружены.

Мне нужно сообщить jQuery, чтобы разрешить кешировать, когда он видит эти скрипты. Ответ на отчет об ошибке предполагает использование

$.ajaxSetup({ cache: true })

... который работает, но изменяет настройки для всех будущих запросов AJAX. Есть ли способ сделать что-то вроде:

// Get current setting - code not valid but is what I want
var defaultCache = $.ajaxSetup("cache");

$.ajaxSetup({cache:true});  // Now set it to what I want

// do stuff…

$.ajaxSetup({cache:defaultCache});  // Set it back to the default
4b9b3361

Ответ 1

вы можете сделать это:

$.ajaxSetup()['cache']

Ответ 2

Вы можете использовать это:

$.ajaxSettings['cache']

Ответ 3

// Save current global ajax setup
$.cachedAjaxSetup = $.extend(true, {}, $.ajaxSetup());

// change global ajax setup
$.ajaxSetup({
  headers : { "Authorization": 123 }
});

// revert back to saved ajax setup
$.ajaxSetup( $.cachedAjaxSetup );

Проблема (раздражающая) заключается в том, что объект будет объединен, поэтому в приведенном выше примере параметр headers останется, потому что он не существует на исходном объекте.

Вы можете преодолеть это, если знаете, какие свойства были добавлены, кешируйте их и вручную удалите их так delete $.ajaxSettings.headers, а затем добавьте их обратно, когда вам понадобится эта настройка. грязный, но он работает.