Могу ли я заменить однострочник jQuery.load() эквивалентным вызовом fetch()?
У меня есть страница, на которой используется однострочный jQuery
$('#id').load('/url');
чтобы загрузить фрагмент в DOM в определенном месте.
Если я хочу удалить зависимость от jQuery, есть ли простой альтернативный способ сделать это - возможно, с помощью относительно нового API fetch()?
3 ответа
Решение
Сделайте это так:
fetch('/url')
.then(response => response.text())
.then(value => {
document.getElementById('id').innerHTML = value
});
Почти однострочник:)
;(async () => {
document.getElementById('id').innerHTML = await (await fetch('/url')).text();
})();
чтобы найти практическое применение, вам нужно хотя бы проверить код ответа, поэтому сначала я бы реорганизовал его так
;(async () => {
let res = await fetch('/url');
if(res.ok){
document.getElementById('id').innerHTML = await res.text();
}
else { ... }
})();
обработка ошибок все еще отсутствует, но я уверен, что вы уловили картину:)
Сделать можно так:
fetch('/method')
.then(response=> response.text())
.then(res => { document.getElementById('id').innerHTML = res; });