我有一个ajax post请求,它会动态加载一些数学内容,如下所示
// post comment
$post_comment.on("click", "[data-submit='post-comment']", function() {
$.ajax({
success: function(response) {
if(response.success) {
$('#comment-list').load(' ' + '#comment-list');
MathJax.Hub.Queue(["Typeset",MathJax.Hub, "comment-list"]);
}
},
});
});
上面提到的mathjax命令无法呈现动态加载的数学脚本。 当我在命令行上执行相同的命令时,它正在工作!!
如果有人解释为什么会这样,以及如何解决
,那就太好了答案 0 :(得分:4)
load()
方法使用异步执行的ajax意味着在将请求发送到服务器之后,之后的语句将继续执行而不等待来自服务器的响应返回。
在这种情况下,当发送load
请求时,在使用响应填充#comment-list
之前,MathJax.Hub.Queue(["Typeset",MathJax.Hub, "comment-list"]);
语句将被执行,因此它不会呈现任何内容。
解决方案是使用load提供的回调来运行必须处理由ajax请求加载的元素的语句
实施例
$('#comment-list').load(' ' + '#comment-list', function(){
MathJax.Hub.Queue(["Typeset",MathJax.Hub, "comment-list"]);
});