В чем разница между XMLHttpRequest, jQuery.ajax, jQuery.пост, на jQuery.получить


Как я могу узнать, какой метод лучше всего подходит для ситуации? Кто-нибудь может привести несколько примеров, чтобы понять разницу с точки зрения функциональности и производительности?

6 102

6 ответов:

  • 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() для всех ваш запрос, но вам придется написать немного больше кода, потому что ему нужно немного больше вариантов, чтобы вызвать его.

аналогия

это похоже на то, что вы сможете купить себе автомобильный двигатель, который вам нужно будет создать вокруг него целый автомобиль с рулевым управлением, тормозами и т. д... Производители автомобилей производят автомобили завершено, с дружественным интерфейсом (педали, руль и т. д.) так что вам не нужно делать все это самостоятельно.

каждый из них использует XMLHttpRequest. Это то, что браузер использует, чтобы сделать запрос. jQuery-это просто библиотека JavaScript и $.ajax метод используется для создания XMLHttpRequest.

$.пост и $.получить это просто сокращенные версии $.ajax. Они делают почти то же самое, но делает его быстрее написать запрос AJAX - $.post делает запрос HTTP POST и $.get делает запрос HTTP GET.

jQuery.get - Это оболочка для jQuery.ajax, который является оболочкой для XMLHttpRequest.

XMLHttpRequest и Fetch API (экспериментальный в это время) являются единственными в DOM, поэтому должны быть самыми быстрыми.

Я видел много информации, которая больше не является точной, поэтому я сделал тестовую страницу, где каждый может проверить версию из версии, которая лучше всего в любое время:

https://jsperf.com/xhr-vs-jquery-ajax-vs-get-vs-fetch

из моих тестов сегодня показывает, что только jQuery не является чистым или даже быстрым решением, результаты для меня на мобильном или настольном компьютере показывают, что jQuery, по крайней мере, на 80% медленнее, чем XHR2, если вы используете слишком много ajax, в мобильном устройстве потребуется много времени для загрузки простого сайта.

само использование находится в ссылке тоже.

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

jQuery.ajax и XMLHttpRequest-это загрузки страниц, аналогичные post и get, за исключением того, что страница не изменяется. Любая информация, возвращаемая сервером, может быть использована в JavaScript локально, чтобы быть использованы в любом виде, в том числе изменения макета страницы. Они обычно используются для выполнения асинхронной работы, пока пользователь все еще может перемещаться по странице. Хорошим примером этого могут быть возможности автозаполнения путем динамической загрузки из базы данных значений для завершения текстового поля. Принципиальная разница между jQuery.ajax и XMLHttpRequest - это jQuery.ajax использует XMLHttpRequest для достижения того же эффекта, но с более простым интерфейсом. Если вы используете jQuery я бы рекомендовал вы должны придерживаться jQuery.Аякс.

старый пост. но все же хочу ответить, одно отличие, с которым я столкнулся при работе с Веб-Работников(javascript)

веб-работники не могут иметь доступа на уровне пользовательского интерфейса. Это означает, что вы не можете получить доступ к любой DOM элементы в коде JavaScript, который вы собираетесь запустить с помощью веб-работников.Такие объекты, как окно, документ и родитель, не могут быть доступны в коде web-worker.

Как известно jQuery библиотека привязана к HTML DOM, и это позволит нарушить правило "нет доступа DOM". Это может быть немного болезненно, потому что методы, такие как jQuery.ajax, jQuery.пост, на jQuery.получить не может использоваться в веб-рабочих. К счастью, вы можете использовать XMLHttpRequest объект для выполнения запросов Ajax.

что касается методов jQuery,.post и .get просто .ajax внутренне, их цель состоит в том, чтобы абстрагироваться от некоторых ненужных вариантов .ajax и предоставить некоторые значения по умолчанию для данного типа запроса, соответственно.

Я сомневаюсь, что есть большая разница в производительности между 3.

The .ajax метод сам по себе делает XMLHttpRequest, он будет сильно оптимизирован в соответствии с остальной частью jQuery, но он, вероятно, не будет таким эффективным как будто вы сами адаптировали все взаимодействие.. но в этом разница между написанием большого количества кода или написанием jQuery.ajax.