Як я можу дізнатися, який метод найкращий для ситуації? Чи може хтось навести кілька прикладів, щоб знати різницю у функціональності та продуктивності?
Як я можу дізнатися, який метод найкращий для ситуації? Чи може хтось навести кілька прикладів, щоб знати різницю у функціональності та продуктивності?
Відповіді:
XMLHttpRequest
- це необроблений об’єкт браузера, який jQuery перетворює на більш зручну та спрощену форму та підтримує функціональність між браузером.
jQuery.ajax
є загальним запитувачем Ajax у jQuery, який може робити будь-які запити типу та вмісту.
jQuery.get
а jQuery.post
з іншого боку може видавати лише запити GET та POST. Якщо ви не знаєте, що це, слід перевірити протокол HTTP і трохи навчитися. Внутрішньо ці дві функції використовують, jQuery.ajax
але вони використовують окремі налаштування, які вам не потрібно встановлювати, таким чином, спрощуючи GET або POST-запит порівняно з використанням jQuery.ajax
. GET і POST є найбільш використовуваними методами HTTP у будь-якому випадку (порівняно з DELETE, PUT, HEAD або навіть іншими рідко використовуваними екзотиками).
Усі функції jQuery використовують XMLHttpRequest
об'єкт у фоновому режимі, але надають додаткову функціональність, яку вам не доведеться виконувати самостійно.
Тож якщо ви використовуєте jQuery, я настійно рекомендую використовувати лише функціонал jQuery . Забудьте про XMLHttpRequest
загальне. Використовуйте відповідні варіації функцій запиту jQuery і в усіх інших випадках використовуйте $.ajax()
. Так що не забувайте , що є і інші пов'язані з загальним JQuery Ajax функції до $.get()
, $.post()
і $.ajax()
. Ну, ви можете просто використовувати $.ajax()
для всіх своїх запитів, але вам доведеться написати трохи більше коду, оскільки для його дзвінка потрібно трохи більше варіантів.
Це як би ви змогли придбати собі автомобільний двигун, який вам доведеться створити навколо нього цілий автомобіль з рульовим керуванням, гальмами тощо ... Виробники автомобілів випускають комплектуючі машини, з привітним інтерфейсом (педалі, кермо тощо) тож вам не доведеться все робити самостійно.
$.post
і $.get
єдине, що повільніше - це невелика кількість коду, перш ніж $.ajax
викликати. Але якби ви писали свої власні процедури, використовуючи безпосередньо XHR, речі можуть бути трохи оптимізовані, але можуть бути більш баггі. Я пропоную вам тримати себе на стороні jQuery. Це полегшить ваше життя. А враховуючи той факт, що виклик асинхронізації займає набагато більше часу, ніж код, який його видає, ви, ймовірно, не помітите очевидних відмінностей між цими дзвінками.
$.ajax
щоб зробити свої дзвінки послідовними скрізь, якщо хочете. Поки ви не використовуєте XHR безпосередньо, ви хочете робити це в будь-якому випадку.
Кожен з них використовує XMLHttpRequest. Це те, що браузер використовує для здійснення запиту. jQuery - це лише бібліотека JavaScript і $ .ajax метод використовується для створення XMLHttpRequest.
$ .post і $ .get - це лише скорочені версії $.ajax
. Вони роблять майже те саме, але роблять більш швидким написання запиту AJAX - $.post
робить HTTP POST-запит і $.get
робить HTTP GET-запит.
GET
Запит відправить всі дані в рядку URL - який може бути обмежена клієнт / сервер ( stackoverflow.com/questions/2659952 / ... ). А POST
запити відправляє всі дані в заголовках, так що граничний розмір URL не повинен бути проблемою (якщо у вас є дійсно довгий файл і імена папок на ваш сценарій!).
GET
. Якщо ви хочете щось надіслати (наприклад, опублікувати твіт), тоді використовуйте POST
,
jQuery.get
є обгорткою для jQuery.ajax
, яка є обгорткою для XMLHttpRequest.
API XMLHttpRequest та Fetch (експериментальний на даний момент) є єдиними в DOM, тому повинні бути найшвидшими.
Я бачив багато інформації, яка вже не є точною, тому я зробив тестову сторінку, де кожен може перевірити версію, версія якої найкраща в будь-який час:
https://jsperf.com/xhr-vs-jquery-ajax-vs-get-vs-fetch
З моїх тестів сьогодні видно, що тільки jQuery не є чистим або навіть швидким рішенням, результати для мене на мобільних або на робочих столах показують, що jQuery принаймні на 80% повільніше, ніж XHR2, якщо ви використовуєте занадто багато ajax, в мобільному буде потрібно багато часу, щоб завантажити простий сайт.
Саме використання також знаходиться у посиланні.
jQuery.post і jQuery.get імітують типові завантаження сторінки, тобто, ви натискаєте кнопку подання, і вона переносить вас на нову сторінку (або перезавантажує ту саму сторінку). розміщувати та отримувати незначні відмінності в способі надсилання даних на сервер (хорошу статтю про них можна знайти тут .
jQuery.ajax та XMLHttpRequest - це завантаження сторінки, подібне до публікації та отримання, за винятком того, що сторінка не змінюється. Незалежно від інформації, яку повертає сервер, JavaScript може використовуватися локально для будь-якого використання, включаючи зміну макета сторінки. Вони зазвичай використовуються для асинхронної роботи, поки користувач все ще може переходити по сторінці. Хорошим прикладом цього можуть бути функції автозаповнення, динамічно завантажуючи зі значень бази даних, щоб заповнити текстове поле. Принципова відмінність jQuery.ajax від XMLHttpRequest полягає в тому, що jQuery.ajax використовує XMLHttpRequest для досягнення того ж ефекту, але з більш простим інтерфейсом. Якщо ви використовуєте jQuery, я б закликав вас дотримуватися jQuery.ajax.
Старий пост. але все ж хочу відповісти, одна різниця, з якою я зіткнувся під час роботи з веб-працівниками (javascript)
працівники Інтернету не можуть мати доступу до інтерфейсу користувача. Це означає, що ви не можете отримати доступ до будь-яких елементів DOM у коді JavaScript, який ви збираєтеся запустити за допомогою веб-працівників. До таких об'єктів, як вікно, документ та батьків не можна отримати доступ до коду веб-працівника.
Як ми знаємо, бібліотека jQuery прив’язана до HTML DOM, і це дозволить порушити правило "немає доступу до DOM". Це може бути трохи боляче, оскільки такі методи, як jQuery.ajax, jQuery.post, jQuery.get, не можна використовувати у веб-працівників. На щастя, ви можете використовувати об’єкт XMLHttpRequest для того, щоб робити запити Ajax.
Що стосується методів jQuery, .post
а це .get
просто робити .ajax
внутрішньо, їх мета полягає в тому, щоб абстрагувати деякі непотрібні параметри .ajax
і відповідно надати деякі за замовчуванням відповідні цьому типу запиту.
Я сумніваюся, що між будь-яким із цих трьох є велика різниця.
.ajax
Метод сам по собі робить XMLHttpRequest, це буде сильно оптимізовані відповідно з іншою частиною JQuery, але це , ймовірно , не буде настільки ж ефективним , як якщо б ви спеціально все взаємодія себе .. але це різниця між написанням великої кількості коду або написання jQuery.ajax
.