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

143

В чем разница между $.ajax() и $.get() и $.load()?

Что лучше использовать и в каких условиях?

Теги:

9 ответов

196
Лучший ответ

$.ajax() является наиболее настраиваемым, где вы получаете мелкозернистый контроль над HTTP-заголовками и т.д. Используя этот метод, вы также можете получить прямой доступ к объекту XHR. Кроме того, обеспечивается более тонкая обработка ошибок. Поэтому может быть более сложным и часто ненужным, но иногда очень полезным. Вы должны иметь дело с возвращенными данными сами с обратным вызовом.

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

.load() похож на $.get(), но добавляет функции, которые позволяют определить, где в документе должны быть вставлены возвращаемые данные. Поэтому действительно можно использовать только тогда, когда вызов приведет только к HTML. Он называется несколько иначе, чем другие глобальные вызовы, поскольку это метод, связанный с конкретным элементом DOM, обернутым jQuery. Поэтому можно было бы сделать: $('#divWantingContent').load(...)

Следует отметить, что все $.get(), $.post(), .load() являются всего лишь обертками для $.ajax(), поскольку они называются внутри.

Подробнее в Ajax-документации jQuery: http://api.jquery.com/category/ajax/

  • 12
    Есть ли различия в производительности?
  • 3
    @UzairAli нет, он буквально берет переменные, которые вы передаете ему, и использует их для выполнения jQuery.ajax ()
Показать ещё 1 комментарий
25

Методы предоставляют различные уровни абстракции.

  • $.ajax() дает вам полный контроль над запросом Ajax. Вы должны использовать его, если другие методы не заполняют ваши потребности.

  • $.get() выполняет запрос Ajax GET. Возвращенные данные (которые могут быть любыми данными) будут переданы вашему обработчику обратного вызова.

  • $(selector).load() выполнит запрос Ajax GET и установит содержимое выбранных возвращенных данных (которое должно быть либо текстовым, либо HTML).

Это зависит от ситуации, которую вы должны использовать. Если вы хотите сделать простые вещи, вам не нужно беспокоиться о $.ajax().

например. вы не будете использовать $.load(), если возвращенные данные будут JSON, которые необходимо обработать дальше. Здесь вы можете использовать $.ajax() или $.get().

9

http://api.jquery.com/jQuery.ajax/

jQuery.ajax()

Описание: выполнить асинхронный запрос HTTP (Ajax).

Полный monty, позволяет вам делать любой запрос Ajax.


http://api.jquery.com/jQuery.get/

jQuery.get()

Описание: Загрузка данных с сервера с помощью запроса HTTP GET.

Только позволяет делать запросы HTTP GET, требует немного меньше конфигурации.


http://api.jquery.com/load/

.load()

Описание: Загрузка данных с сервера и размещение возвращенного HTML в согласованный элемент.

Специализируется на получение данных и их ввод в элемент.

5

Очень простой, но

  • $.load(): Загрузите часть html в DOM контейнера.
  • $.get(): используйте это, если вы хотите сделать вызов GET и активно играть с ответом.
  • $.post(): используйте это, если вы хотите сделать вызов POST и не хотите загружать ответ на какой-либо контейнер DOM.
  • $.ajax(): используйте это, если вам нужно что-то сделать, когда XHR завершится с ошибкой, или вам нужно указать параметры ajax (например, cache: true) на лету.
3

Каждый человек имеет право. Функции .load, .get и .post - это разные способы использования функции .ajax.

Лично я считаю, что функция .ajax raw очень запутанна и предпочитает использовать load, get или post, поскольку мне это нужно.

POST имеет следующую структуру:

$.post(target, post_data, function(response) { });

GET имеет следующее:

$.get(target, post_data, function(response) { });

LOAD имеет следующее:

$(*selector*).load(target, post_data, function(response) { });

Как вы можете видеть, между ними мало различий, потому что это ситуация, которая определяет, какой из них использовать. Нужно ли отправлять информацию в файл внутри? Используйте .post(это будет большинство случаев). Вам нужно отправить информацию таким образом, чтобы вы могли предоставить ссылку на конкретный момент? Используйте .get. Оба они позволяют обратный вызов, где вы можете обрабатывать ответ файлов.

Важно отметить, что .load действует двумя разными способами. Если вы указали только URL-адрес целевого документа, он будет действовать как get (и я говорю "act", потому что я тестировал проверку $_POST в вызываемом PHP при использовании поведения по умолчанию по умолчанию. Он обнаруживает $_POST, а не $_GET, возможно, было бы более точно сказать, что оно действует как .post без каких-либо аргументов); однако, как http://api.jquery.com/load/, как только вы предоставите массив аргументов функции, он отправит информацию в файл. В любом случае функция .load будет напрямую вставлять информацию в элемент DOM, который в МНОГИХ случаях является очень разборчивым и очень прямым; но все же обеспечивает обратный вызов, если вы хотите сделать что-то большее с ответом. Кроме того,.load позволяет извлекать определенный блок кода из файла, предоставляя вам возможность сохранять каталог, например, в html файле, и извлекать куски (элементы) непосредственно в элементы DOM.

2

Важное примечание: Метод jQuery.load() может выполнять не только GET, но также POST запросы, если задан параметр data​​strong > (см. http://api.jquery.com/load/)

data​​strong > Тип: PlainObject или String Простой объект или строка, которая отправляется на сервер с запросом.

Метод запроса Метод POST используется, если данные предоставляются как объект; в противном случае предполагается GET.

Example: pass arrays of data to the server (POST request)
$( "#objectID" ).load( "test.php", { "choices[]": [ "Jon", "Susan" ] } );
1
$.get = $.ajax({type: 'GET'});

$.load() - вспомогательная функция, которая может быть вызвана только на элементах.

$.ajax() дает вам наибольший контроль. вы можете указать, хотите ли вы POST-данные, получить больше обратных вызовов и т.д.

0

Все очень хорошо объяснили эту тему. Еще один момент, который я хотел бы добавить о методе .load().

В соответствии с Загрузить документ, если вы добавите суффикс-селектор в URL-адрес данных, тогда он не будет выполнять скрипты при загрузке содержимого.

Рабочий Plunker

            $(document).ready(function(){
                $("#secondPage").load("mySecondHtmlPage.html #content");
            })

С другой стороны, после удаления селектора в URL-адресе запускаются сценарии в новом контенте. Попробуйте этот пример

после удаления #content в url в файле index.html

            $(document).ready(function(){
                $("#secondPage").load("mySecondHtmlPage.html");
            })

Нет такой встроенной функции, предоставляемой другими методами в обсуждении.

-2

Оба используются для отправки некоторых данных и получения ответа с использованием этих данных.

GET. Получите информацию, хранящуюся на сервере. (т.е. поиск, чириканье, информация о человеке). Если вы хотите отправить информацию, тогда получите запрос на отправку запроса с помощью process.php?name=subroto. Поэтому он в основном отправляет информацию через url. Url не может обрабатывать более 2036 char. Итак, для сообщения в блоге вы можете помнить, что это невозможно?

POST. Сообщение сделайте то же самое, что и GET. Регистрация пользователя, вход в систему пользователя, отправка больших данных, сообщение в блоге. Если вам нужно отправить защищенную информацию, используйте пост или для больших данных, так как они не проходят через URL.

AJAX: $.get() и $.post() содержат функции, которые являются подмножествами $.ajax(). Он имеет большую конфигурацию.

$.get (), который является своего рода сокращением для $.ajax(). При использовании $.get () вместо передачи в объекте вы передаете аргументы. Как минимум, вам понадобятся первые два аргумента, которые являются URL-адресом файла, который вы хотите получить (например, test.txt), и успешным обратным вызовом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню