javascript - vanilla js 相当于通过 div id 通过 XMLHttpRequest 的“加载页面片段”
问题描述
出于学习目的,尽量不要使用 jQuery 来获取远程内容。
以下代码段运行良好。它获取两个 div 并将它们放在当前页面中。
它正在获取这个原始要点:
<div class="remote" id='one'>one</div>
<div class="remote" id='two'>two</div>
function remoteFetch() {
var xhr = new XMLHttpRequest();
var varUrl = 'https://gist.githubusercontent.com/persianphilosopher/b0d4e948da801d09969b4ac6f5c0206d/raw/d139dd28e2cd5a73a4b38f489c8462c755c342c6/temp';
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
if (xhr.status == 200) {
document.getElementById("here").innerHTML = xhr.responseText;
}
}
}
xhr.open("GET", varUrl, true);
xhr.send();
}
remoteFetch();
<div id="here"></div>
问题:我想不通的是相当于以下 jQuery 位:
$("#here").load("varUrl #one");
这将允许我只通过它的 id 获取一个 div。
我在 SO 上找到的最接近的是这个答案,但我没有根据我的需要在这里调整它。
提前致谢。
解决方案
您的 codepen 中的实现几乎可以正常工作,我在这个 fork 中纠正了两个问题:
https ://codepen.io/anon/pen/VdJYVG?editors=1010
第一个问题是一个错字svgDoc.getElementsById
,应该只是svgDoc.getElementById
。
第二个问题是 DOMParser 中的解析问题。您text/xml
作为预期的 MIME 类型传入,而您要解析的内容是text/html
.
推荐阅读
- python - 如何按日期时间值过滤 JSON 对象?
- reactjs - 将数字转换为LocaleString 反应
- tensorflow - Keras CNN 在 M1 MacBook 上不起作用 - NSRangeException - NSArrayM objectAtIndexedSubscript:空数组的索引 0 超出范围
- php - php_fpm_max_children_reached 指标如何工作?
- angular - 父窗口动作禁用
- javascript - MapBox 中的选择性不透明度
- flutter - 如何/我可以使用flutter的提供程序模块来有效地处理具有可变数量控件的动态生成页面?
- javascript - 将对象数组字符串转换为 JSON 对象
- ios - Swift JSONSerialization.data 崩溃
- javascript - Vue.Js:事件触发功能的奇怪行为