Разница между $.ajax(); и $.ajaxSetup();

#jquery #ajax

#jquery #ajax

Вопрос:

В чем разница между $.ajax(); и $.ajaxSetup(); в jQuery, как в:

 $.ajax({
    cache:false
});
  

и

 $.ajaxSetup({
    cache:true
});
  

Кроме того, какой из них является лучшим вариантом?

Ответ №1:

Следующее предотвратит кэширование всех будущих запросов AJAX, независимо от того, какой метод jQuery вы используете ($.get, $.ajax и т.д.)

 $(document).ready(function() {
  $.ajaxSetup({ cache: false });
});
  

вы должны использовать $.ajax, который позволит вам отключить кэширование для этого экземпляра:

 $.ajax({url: "myurl", success: myCallback, cache: false});
  

Комментарии:

1. Примечание: вам не нужно ждать, пока ready событие изменит настройку. На самом деле это было бы слишком поздно, если бы во встроенных скриптах были вызовы AJAX.

Ответ №2:

ajaxSetup устанавливает значения по умолчанию, которые будут действительны для всех запросов ajax. После этого вам не нужно выполнять ту же настройку в $.ajax

Все настройки $.ajax будут действительны только для этого вызова ajax.

Ответ №3:

Первый отключает кэш для каждого запроса, второй настраивает его на глобальное отключение по умолчанию для всех функций AJAX.

Ответ №4:

Чтобы избежать кэширования, один из вариантов — указать разные URL для одного и того же ресурса или данных. Чтобы сгенерировать другой URL-адрес, вы можете добавить случайную строку запроса в конец URL-адреса. Этот метод работает для запросов jQuery, Angular или других типов ajax.

 myURL = myURL  "?random=" new Date().getTime();
  

jQuery использует аналогичную технику через $.ajax({cache:false}); и $.ajaxSetup({cache:false});

$.ajax({cache:false}) применяет метод, в который он включен, $.ajaxSetup({cache:false}); применяет метод для всех функций AJAX.

Ответ №5:

Кроме того, какой из них является лучшим вариантом?

Согласно документации jQuery api, использование $.ajaxSetup() не рекомендуется:

Примечание: Указанные здесь настройки будут влиять на все вызовы $.ajax или производные на основе Ajax, такие как $.get() . Это может вызвать нежелательное поведение, поскольку другие вызывающие устройства (например, плагины) могут ожидать обычных настроек по умолчанию. По этой причине мы настоятельно не рекомендуем использовать этот API. Вместо этого явно задайте параметры в вызове или определите простой плагин для этого.