Кто-нибудь знает, в чем разница между $("#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
Из документации...
Загрузите HTML из удаленного файла и введите его в DOM.
Загрузите удаленную страницу с помощью 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 и. Всегда для отказа и "независимо от того, какие" случаи. Вы не получаете это в нагрузке. Надеюсь, что я прав.