Разница между $ .ajax () и $ .get () и $ .load () - PullRequest
163 голосов
/ 06 октября 2010

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

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

Ответы [ 9 ]

228 голосов
/ 06 октября 2010

$.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/

29 голосов
/ 06 октября 2010

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

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

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

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

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

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

9 голосов
/ 06 октября 2010

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

jQuery.ajax()

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

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


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

jQuery.get()

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

Позволяет отправлять только запросы HTTP GET, требует чуть меньше настроек.


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

.load()

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

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

8 голосов
/ 06 октября 2010

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

  • $.load(): загрузить кусок HTML в контейнер DOM.
  • $.get(): используйте это, если хотите сделать ПОЛУЧИТЕ вызов и активно работайте с ответом.
  • $.post(): используйте это, если вы хотите сделать вызов POST и не хотите загружать ответ в некоторый контейнерDOM.
  • $.ajax(): используйте это, если вам нужно что-то сделать, когда XHR не работает, или вам нужно указать параметры ajax (например, cache: true) на лету.
4 голосов
/ 04 июня 2014

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

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

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

Example: pass arrays of data to the server (POST request)
$( "#objectID" ).load( "test.php", { "choices[]": [ "Jon", "Susan" ] } );
3 голосов
/ 04 мая 2016

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

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

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-адрес целевого документа, он будет действовать как получение (и я говорю действовать, потому что я проверял проверку на $_POST в вызываемом PHP при использовании поведения по умолчанию .load и обнаруживает $_POST, а не $_GET; возможно, точнее было бы сказать, что он действует как .post без каких-либо аргументов);однако, как говорит http://api.jquery.com/load/, после того, как вы предоставите массив аргументов функции, она отправит информацию в файл.Как бы то ни было, функция .load будет напрямую вставлять информацию в элемент DOM, что в МНОГИХ случаях очень разборчиво и очень прямолинейно;но все равно обеспечивает обратный вызов, если вы хотите сделать что-то еще с ответом.Кроме того, .load позволяет извлекать определенный блок кода из файла, давая вам возможность сохранить каталог, например, в html-файле, и извлечь его части (элементы) непосредственно в элементы DOM.

2 голосов
/ 06 октября 2010
$.get = $.ajax({type: 'GET'});

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

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

1 голос
/ 27 ноября 2016

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

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

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

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

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

0 голосов
/ 15 июля 2016

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

Согласно Загрузить документ , если вы добавите суффиксный селектор в url данных, он не будет выполнять сценарии при загрузке содержимого.

Рабочий Плункер

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...