Модуль ajax был переписан для 1.5: https://blog.jquery.com/2011/01/31/jquery-15-released/
В начале метода jquery $.ajax
находится эта проверка:
// If url is an object, simulate pre-1.5 signature
if ( typeof url === "object" ) {
options = url;
url = undefined;
}
, поэтому функциональной разницы нетбудет обрабатывать любой метод (предполагая, что url
в (url,settings)
является строкой).
Далее, он делает:
s.url = url || s.url;
, поэтому URL за пределами настроек перезаписывает тот, что внутри, если оба предоставлены.
Это позволяет вам создать общее,повторно используемый объект настроек ajax для использования с разными URL-адресами.
Ключ здесь еще ниже:
s = jQuery.ajaxSetup( {}, options )
это применяет любые предыдущие вызовы к $.ajaxSetup
для параметров, то есть вы можете настроитьвсе ваши настройки ajax в $.ajaxSetup
, а затем их не нужно передавать в $.ajax
, который может быть простым URL-адресом, например:
$.ajaxSetup({
data: { html: "<b>ok</b>" },
method: "POST"
});
// now call $.ajax with just the url
$.ajax("/echo/html")
.done(function(h) { $("#o3").html(h) });
Без отдельного строкового параметра url, это потребуетбыть
$.ajax({ url: "..." })
Это продемонстрировано в этой скрипке (которая использует скрипту /echo/html
для вызовов ajax)
https://jsfiddle.net/2mnr8ok5/
IsЕсть ли какое-либо преимущество (или недостаток) в указании URL-адреса как отдельного параметра, а не как свойства объекта настроек?
Если вы передаете объект настроек и у него есть URL-адрес, то естьНет смысла звонить
$.ajax(settings.url, settings);
, если выиспользуя $.ajaxSetup
и просто изменив URL-адрес, затем передача в виде строки будет удобнее, чем создание объекта только с URL-адресом внутри.