У чому різниця між $.ajax()
і $.get()
та $.load()
?
Що краще використовувати та в яких умовах?
У чому різниця між $.ajax()
і $.get()
та $.load()
?
Що краще використовувати та в яких умовах?
Відповіді:
$.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/
Методи забезпечують різні шари абстракції.
$.ajax()
дає повний контроль над запитом Ajax. Ви повинні використовувати його, якщо інші методи не задовольняють ваші потреби.
$.get()
виконує GET
запит Ajax . Повернуті дані (якими можуть бути будь-які дані) будуть передані вашому оброблювачеві зворотного дзвінка.
$(selector).load()
виконає GET
запит Ajax і встановить вміст обраних повернутих даних (який повинен бути текстом або HTML).
Це залежить від ситуації, який метод ви повинні використовувати. Якщо ви хочете робити прості речі, не потрібно турбуватися $.ajax()
.
Наприклад, ви не будете користуватися $.load()
, якщо повернені дані будуть JSON, які потребують подальшої обробки. Тут ви б або використовували $.ajax()
або $.get()
.
http://api.jquery.com/jQuery.ajax/
jQuery.ajax()
Опис: Виконайте асинхронний запит HTTP (Ajax).
Повний моніт дозволяє вам робити будь-який запит на Ajax.
http://api.jquery.com/jQuery.get/
jQuery.get()
Опис: Завантажте дані з сервера за допомогою HTTP GET-запиту.
Тільки дозволяє робити HTTP GET запити, потрібно трохи менше конфігурації.
.load()
Опис: Завантажте дані з сервера та помістіть повернутий HTML у відповідність елементу.
Спеціалізується для отримання даних та введення їх в елемент.
Дуже базовий, але
$.load()
: Завантажте шматочок HTML у контейнер DOM.$.get()
: Використовуйте це, якщо ви хочете здійснити дзвінок GET і пограти з відповіддю.$.post()
: Використовуйте це, якщо ви хочете здійснити виклик POST і не хочете завантажувати відповідь на деякий контейнер DOM.$.ajax()
: Використовуйте це, якщо вам потрібно щось зробити, коли XHR виходить з ладу, або вам потрібно вказати параметри ajax (наприклад, кеш: true) на льоту.Важлива примітка: метод jQuery.load () може не лише отримувати GET, але і запити POST , якщо параметр даних надається (див .: http://api.jquery.com/load/ )
Тип даних : PlainObject або String Простий об'єкт або рядок, що надсилається серверу разом із запитом.
Метод запиту Метод POST використовується, якщо дані надаються як об'єкт; інакше GET передбачається.
Example: pass arrays of data to the server (POST request)
$( "#objectID" ).load( "test.php", { "choices[]": [ "Jon", "Susan" ] } );
Кожен має право. Функції .load
, .get
і .post
, різні способи використання функції .ajax
.
Особисто я вважаю, що .ajax raw функція дуже заплутана, і вважаю за краще використовувати завантаження, отримання чи публікацію, як мені потрібно.
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 (і я кажу, що діяв, тому що я перевіряв перевірку $_POST
на виклик PHP, використовуючи поведінку .load за замовчуванням, і він виявляє $_POST
, ні $_GET
; можливо, було б точніше скажіть, що він діє як .post без жодних аргументів); однак, як http://api.jquery.com/load/каже, щойно ви надасте масив аргументів функції, вона відправить інформацію у файл. Незалежно від випадку, функція .load буде безпосередньо вставляти інформацію в елемент DOM, який у багатьох випадках є дуже розбірливим та дуже прямим; але все ж надає зворотний виклик, якщо ви хочете зробити щось більше з відповіддю. Крім того, .load дозволяє витягти певний блок коду з файлу, даючи можливість зберегти каталог, наприклад, у html-файл, та отримати фрагменти його (елементів) безпосередньо в елементи DOM.
$.get = $.ajax({type: 'GET'});
$.load()
- це допоміжна функція, яку можна використовувати лише на елементах.
$.ajax()
дає вам найбільше контролю. Ви можете вказати, чи хочете ви надсилати дані, отримуєте більше зворотних дзвінків тощо.
Обидва використовуються для надсилання деяких даних та отримання певної відповіді за допомогою цих даних.
GET : Отримайте інформацію, що зберігається на сервері. (тобто пошук, твіт, інформація про людину). Якщо ви хочете надіслати інформацію, то отримайте запит надіслати запит, використовуючи, таким process.php?name=subroto
чином, він в основному надсилає інформацію через URL. URL не може обробити більше 2036 знаків. Тож для публікації в блозі ви можете пам'ятати, що це неможливо?
POST : Публікація робить те саме, що і GET. Реєстрація користувача, Вхід користувача, Надсилання великих даних, Повідомлення в блозі. Якщо вам потрібно надіслати захищену інформацію, тоді використовуйте публікацію або для великих даних, оскільки вона не проходить через URL.
AJAX : $.get()
і $.post()
містять функції, які є підмножинами $.ajax()
. Він має більше конфігурації.
$.get ()
метод, який є свого роду скороченням $.ajax()
. При використанні $.get ()
замість передачі в об’єкт ви передаєте аргументи. Як мінімум, вам знадобляться перші два аргументи, які є URL-адресою файлу, який ви хочете отримати (наприклад, test.txt) та успішного зворотного виклику.
Усі дуже добре пояснили тему. Є ще один момент, який я хотів би додати про .load () метод.
Згідно з документом Load, якщо ви додаєте суфікс-селектор у URL-адресу даних, він не виконуватиме сценарії для завантаження вмісту.
$(document).ready(function(){
$("#secondPage").load("mySecondHtmlPage.html #content");
})
З іншого боку, після видалення селектора в URL-адресі запустяться сценарії нового вмісту. Спробуйте цей приклад
після видалення #content в URL-адресі у файлі index.html
$(document).ready(function(){
$("#secondPage").load("mySecondHtmlPage.html");
})
Немає такої вбудованої функції, яка надається іншими методами, що обговорюються.