【发布时间】:2018-04-08 02:58:36
【问题描述】:
我正在使用 ajax 将“mysite/math/”中的所有内容加载到 math.php 中。在 math.php 中,我想使用 katex 渲染加载的数学内容。
在 math.php 中,我从上面链接中的 cdn 加载库 katex。
math.php 的 html:
<body>
<div id='main'>
</body>
在 math.php 的脚本标签中,我有一些 php 可以从 'mysite/math/' 获取 url 列表
echo "var x = [];";
$dir = "./math/";
$a = scandir($dir);
foreach ($a as $x) {
if ($x === '.' or $x === '..') continue;
echo "x.push('mysite/math/" . $x . "');";
}
所以这给了我一个数组 x,其中包含我想将其内容加载到我的网页中的每个文件的位置。
现在,在 javascript 中,我对数组 x 中的 url 进行多次 AJAX 调用:
// defining the ajaxing function
function myfunction(url, someFunction) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
someFunction(this, url);
}
};
xhr.open('GET', url, true);
xhr.send(null);
}
// defining the callback function
function callbackfunction(xhr, url) {
var name = url;
var div = document.createElement('div');
div.innerHTML = xhr.responseText;
div.className += name;
document.getElementById('main').appendChild(div);
}
// here, I'm actually executing the ajax calls
for (var i = 0; i < x.length; i++) {
myfunction(x[i] + '?w=' + Math.random(), callbackfunction);
}
到目前为止,所有这些都运行良好。
问题:
在 'mysite/math/' 中的每个 html 文件中,都有带有 class='math' 的 span 标签,其中包含我要呈现的数学内容。所以在 math.php 中,我看到了我所有的内容,我看到了我的 span 标签,class='math';他们都在那里。
在 math.php 内部还有以下使用 katex 函数 katex.render() 的 javascript
var math = document.getElementsByClassName('math');
for (var i = 0; i < math.length; i++) {
katex.render(math[i].innerHTML, math[i]);
}
如果内容不是使用 ajax 加载的,我使用 katex 的方式可以正常工作。
注意: 我已经多次看到这个问题,但答案总是使用 jquery。我想要一个 javascript 的解决方案。
【问题讨论】:
标签: javascript ajax