Функция $.getScript()

Функция $.getScript() позволяет загрузить сценарий JavaScript с любого домена. Запрос отправляется методом GET с добавлением параметра с меткой времени для запрета кеширования загружаемого скрипта. После загрузки сценарий исполняется в глобальном контексте. Формат функции:

<jqXHR> = $.getScript(<URL>[, <Функция обратного вызова>])

Если во втором параметре указана функция, то она будет выполнена после успешного получения скрипта с сервера. В качестве параметра <Функция обратного вызова> указывается ссылка на функцию следующего формата:

function <Название функции>([<Данные>[, <Статус>[, <Объект jqXHR>]]]) {
   // ...
}

Внутри функции обратного вызова доступен указатель this на объект с параметрами запроса. Если данные были получены с того же домена, то через первый параметр будут доступны данные, полученные с сервера, а через второй параметр — статус запроса (значение success — при успешной загрузке). Через параметр <Объект jqXHR> доступна ссылка на объект, имитирующий объект XMLHttpRequest. В случае получения данных с другого домена переменная, указанная в первом параметре, будет иметь значение undefined.

Функция $.getScript() возвращает ссылку на объект jqXHR. Обработать ошибку загрузки можно с помощью метода fail() объекта jqXHR:

$.getScript('/script.js', function(data) {
   console.log(data);
}).fail( function(xhr, status, error) {
   console.log('Ошибка: ' + error);
});

В качестве примера рассмотрим получение и выполнение скрипта с другого домена. Создадим документ http://localhost/test.html (листинг 3.23), который будет загружать скрипт из файла http://site1/script.js (листинг 3.24).

Листинг 3.23. Содержимое файла http://localhost/test.html

<!doctype html>
<html lang="ru">
<head>
   <meta charset="utf-8">
   <meta name="viewport"
      content="width=device-width, initial-scale=1, shrink-to-fit=no">
   <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
   <title>Функция $.getScript()</title>
</head>
<body>
<div class="container my-3">
    <button type="button" class="btn btn-primary"
            id="btn1">Получить данные</button>
</div>
<div class="container my-3">
   <div id="div_ajax"></div>
</div>

<script src="/js/jquery.min.js"></script>
<script>
$('#btn1').click( function() {
   $.getScript('http://site1/script.js',
      function(data, status, xhr) {
         if (typeof myStatus !== 'undefined') {
            $('#div_ajax').text('myStatus = ' + myStatus);
         }
         else {
            $('#div_ajax').text('Ошибка myStatus = undefined');
         }
   }).fail( function(xhr, status, error) {
      $('#div_ajax').text('Ошибка: ' + error);
   });
});
</script>
</body>
</html>

Листинг 3.24. Содержимое файла http://site1/script.js

var myStatus = 'OK';
window.alert('Это данные с другого домена');

Учебник по jQuery и AJAX
Учебник по jQuery и AJAX в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов