Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Функция $.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('Это данные с другого домена');
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов