load()
Метод load()
выполняет ajax-запрос к серверу и вставляет полученный HTML-ответ в выбранные элементы.
Данный метод является самым простым вариантом получения данных с сервера. Он немного похож на вызов $.get(url, data, success)
, но с тем отличием, что load()
- это метод jQuery-объекта, а не глобальная функция. Кроме того, load()
позволяет задать обработчик, который запустится для каждого элемента выборки после вставки полученного HTML-кода в выбранные элементы.
Если jQuery-объект не имеет ни одного элемента (пустая выборка), ajax-запрос выполнен не будет.
Варианты использования
jQ_object.load(URL[, данные][, обработчик]) => jQuery
-
Выполняет ajax-запрос к серверу. Если статус запроса
success
илиnotmodified
, вставляет полученный HTML-код в каждый элемент выборки.URL :string
- URL-адрес для запроса.
данные :string,object
- Данные, отправляемые на сервер. Если данные передаются в виде объекта, тогда запрос выполняется методом POST. Если строкой - методом GET.
обработчик :function(полученные_данные, статус_запроса, jqXHR)
- Функция, которая запустится для каждого элемента выборки после вставки в них HTML-ответа с сервера.
Получение фрагментов HTML-страниц
Метод load()
в отличие от $.get()
позволяет указать конкретную часть полученного HTML-документа для вставки на страницу. Это реализуется с помощью специального синтаксиса для URL-параметра. Если строка с URL-адресом содержит один или более пробелов, тогда всё, что следует после первого пробела, интерпретируется как jQuery-селектор. Этот селектор определяет, какую часть полученного HTML-документа необходимо вставить на страницу. Пример:
$('#container').load('blocks.html #block_1');
В этом случае jQuery загрузит весь документ blocks.html
, после чего найдёт в нём элемент с идентификатором block_1
. Только этот элемент будет вставлен в контейнер
.#container
jQuery использует внутреннее свойство браузеров innerHTML
для просмотра и поиска нужного элемента документа. Во время этого процесса некоторые браузеры самостоятельно отфильтровывают некоторые элементы (например, <html>
, <title>
или <head>
). В результате, полученный методом load()
фрагмент документа может несколько отличаться от оригинального.
Выполнение скриптов
Когда метод load()
вызывается с параметром URL без селектора, ответ с сервера передаётся в метод html()
(для вставки в документ) перед удалением скриптов. При этом все вставляемые скрипты будут выполнены. Если метод load()
вызывается с селектором в параметре URL, тогда скрипты удаляются прежде, чем обновится DOM-дерево страницы (во время парсинга документа), то есть скрипты не будут выполнены.
Примеры
Вставка файла test.html
в элемент
:#result
$('#result').load('test.html');
Вставка всех элементов списка list_1
файла test.html
в элемент
:#result
$('#result').load('test.html ol#list_1 li');