Разница между $( "# id" ). Load и $.ajax?

Кто-нибудь знает, в чем разница между $("#id").load и $.ajax?

Ответ 1

Позвольте мне немного разъяснить вам кое-что:

$.ajax() - базовая и низкоуровневая функция ajax, предоставляемая jQuery, что означает, что вы можете делать то, что захотите, чтобы вы могли работать с объектом XmlHttpRequest. Но однажды разработчики jQuery подумали, что, помимо $.ajax(), они могут предоставить разработчикам более конкретные методы, поэтому им не нужно будет передавать больше параметров, чтобы метод $.ajax() работал так, как они хотят. Например, они сказали вместо передачи json в качестве параметра $.ajax() для указания типа данных возврата, они предоставили $.getJSON(), поэтому мы все знаем, что возвращаемый тип, который мы ожидали, был json или вместо указания метода отправки как post или get, вы можете использовать $.post() или $.get() соответственно.

Итак, load() - это одно и то же, оно может помочь вам вставлять html-данные в ваш html. с помощью метода load() вы знаете, что ожидается часть html.

Разве это не круто?

Я думаю, что меня влюбило.

Для получения дополнительной информации вы можете посетить jquery.com, они даже предоставляют свою новую библиотеку и страницу api tutorial.

Изменить:

 $.ajax({
   type: "POST",
   url: "some.php",
   data: "name=John&location=Boston",
   success: function(msg){
     alert( "Data Saved: " + msg );
   }
 }); 

является таким же, как показано ниже:

$.post("some.php", { name: "John", time: "2pm" },
   function(data){
     alert("Data Loaded: " + data);
   });

Теперь, когда вы видите, что это упрощенная версия $.ajax(), чтобы выполнить пост-вызов, вам необходимо передать некоторую информацию типа метода отправки, которая post, как показано в первом примере, но вместо этого вы может использовать $.post(), потому что вы знаете, что вы делаете, это post, поэтому эта версия упрощена и удобна в работе.

Но не забывайте что-то. За исключением load(), все остальные методы ajax возвращают XHR (экземпляр XmlHttpRequest), поэтому вы можете относиться к ним так, как если бы вы работали с XmlHttpRequest, на самом деле вы работаете с ним tho:), но load() возвращает jQuery, что означает:

$("#objectID").load("test.php", { 'choices[]': ["Jon", "Susan"] } );

в приведенном выше примере, вы можете легко ввести возвращаемый html в элемент #objectID. Разве это не круто? Если он не возвращал jQuery, вы должны были работать с функцией обратного вызова, где вы, вероятно, получите результат из подобного объекта data и вводите его вручную в элемент html, который вы хотите. Так что это будет хлопот, но с помощью метода $.load(), это действительно упрощается в jQuery.

$("#feeds").load("feeds.php", {limit: 25}, function(){
   alert("The last 25 entries in the feed have been loaded");
 }); 

Вы даже можете отправлять параметры, поэтому в соответствии с этими параметрами вы можете выполнить некоторую работу на стороне сервера и отправить часть html обратно клиенту, а ваш симпатичный код jQuery берет его и вводит в элемент #feeds html в примере прямо выше.

Ответ 2

load() инициирует запрос Ajax для извлечения HTML, который при возврате устанавливается в данный селектор.

Все функции jQuery Ajax являются просто обертками для $.ajax() so:

$("#id").load(...);

вероятно, эквивалентен:

$.ajax({
  url: "...",
  dataType: "html",
  success: function(data) {
    $("#id").html(data);
  }
});

Ответ 3

Более краткий обзор и самое важное отличие состоит в том, что $.ajax позволяет установить content-type и datatype.

Эти два важны для создания запросов JSON или XML-запросов. ASP.NET более суетливый с отсутствующим полем типа контента (по крайней мере, когда вы используете [WebMethod]) и просто вернете HTML-страницу, а не JSON.

$.load() предназначен для простого возврата прямого HTML. $.ajax также дает вам

  • кэширование
  • обработка ошибок
  • фильтрация данных
  • пароль

плюс другие.

Ответ 4

Из документации...

$(selector).load(..)

Загрузите HTML из удаленного файла и введите его в DOM.

$.ajax(...)

Загрузите удаленную страницу с помощью HTTP-запроса. Это jQuery низкоуровневая реализация AJAX.

load предназначен специально для выборки (через GET, если не указаны параметры, затем используется POST) HTML-страницу и прямое вложение ее в выбранные узлы (те, которые выбраны частью $(selector) $(selector).load(...).

$.ajax(...) - это более общий метод, который позволяет вам делать запросы GET и POST и не делает ничего конкретного с ответом.

Я рекомендую вам ознакомиться с документацией.

Ответ 5

Здесь исходный код для функции load: http://github.com/jquery/jquery/blob/master/src/ajax.js#L15

Как вы можете видеть, это $ajax с некоторыми настройками параметров. Другими словами, метод удобства.

Ответ 6

Приведенный выше ответ может быть недействительным в свете использования отложенных и перспективных объектов. Я считаю, что с .ajax вы можете использовать. Если вы не можете сделать это с .load. Короче говоря, я считаю, что .ajax более мощный, чем .load. Например:

      some_promise = $.ajax({....});
      .when(some_promise).done(function(){.... });

Вы получаете более подробный контроль над загрузкой html. Существует также .fail и. Всегда для отказа и "независимо от того, какие" случаи. Вы не получаете это в нагрузке. Надеюсь, что я прав.