我可以用等效的 fetch() 调用替换 jQuery.load() 一行代码吗?
Can I replace a jQuery.load() one-liner with an equivalent fetch() call?
我有一个页面使用 jQuery 一个内衬
$('#id').load('/url');
将片段加载到 DOM 的特定位置。
如果我想删除对 jQuery 的依赖,是否有一种简单的替代方法可以做到这一点——可能使用相对较新的 fetch() API?
你可以这样做:
fetch('/method')
.then(response=> response.text())
.then(res => { document.getElementById('id').innerHTML = res; });
这样做:
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 { ... }
})();
仍然缺少错误处理,但我相信你明白了:)
我有一个页面使用 jQuery 一个内衬
$('#id').load('/url');
将片段加载到 DOM 的特定位置。
如果我想删除对 jQuery 的依赖,是否有一种简单的替代方法可以做到这一点——可能使用相对较新的 fetch() API?
你可以这样做:
fetch('/method')
.then(response=> response.text())
.then(res => { document.getElementById('id').innerHTML = res; });
这样做:
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 { ... }
})();
仍然缺少错误处理,但我相信你明白了:)