Mathjax 在 ajax 调用后不排版方程
Mathjax doesn't typeset equations after ajax call
我正在使用 MathJax 在我的网页上排版方程式。第一次加载网页时一切正常 fine.On 单击 "NEXT" 按钮,div 内的等式发生变化(ajax 调用),但它显示为 'raw TEX'即 Mathjax 没有第二次排版。相关代码如下:
标记和脚本
<div class="div_body" id="ques_dashboard">
<p>When $a \ne 0$, there are two solutions to \(ax^2 + bx + c = 0\) and they are $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$</p>
</div>
<div class="div_footer">
<a href="#" class="button ryt_btn" id="answer_submit">SUBMIT</a>
<a href="#" class="button ryt_btn" id="next_q">NEXT</a>
<a href="#" class="button ryt_btn" id="skip_q">SKIP</a>
</div>
<script>
$(document).ready(function(){
$('#next_q').click(function(){
$("#next_q").hide();
$('#answer_submit').show();
$("#skip_q").show();
$.ajax({
type: 'POST',
url: '../ajax/next_question.php',
//data:{queslist:queslist, current_qorder:current_qorder},
success: function(msg){
$('#ques_dashboard').html(msg);
MathJax.Hub.Queue(["Typeset",MathJax.Hub,'ques_dashboard']);
}
});
return false;
});
});
</script>
PHP 调用者 AJAX
<?php?>
<p> If \(a, b, c\) are in HP, then \(\frac {1}{a}, \frac {1}{b}, \frac {1}{c}\) are in AP</p>
我在这里展示了简化的代码,其中包括很多 php 和 mysql。我能够成功显示 "next question" 但无法使用 Mathjax 进行排版。我试过使用 MathJax.Hub.Queue
函数。
我是 jquery 和 ajax 的新手。请帮忙。
问题是您需要转义 '\'
个字符,否则它们会被 jquery
和底层 javascript
解释。所以返回的字符串应该是这样的:
<?php?>
<p> If \(a, b, c\) are in HP, then \(\frac {1}{a}, \frac {1}{b}, \frac {1}{c}\) are in AP</p>
我在 Julien 的帮助下找到了问题所在。下面给出的代码片段在 ajax 调用后干扰了排版。(此队列函数隐藏文本直到排版完成。)
MathJax.Hub.Queue(function () {
document.getElementById("hide_page").style.visibility = "";});
评论这部分解决了问题。
如果我找到同时使用 ajax 和 "hide until typeset" 功能的方法,将更新答案。
我正在使用 MathJax 在我的网页上排版方程式。第一次加载网页时一切正常 fine.On 单击 "NEXT" 按钮,div 内的等式发生变化(ajax 调用),但它显示为 'raw TEX'即 Mathjax 没有第二次排版。相关代码如下:
标记和脚本
<div class="div_body" id="ques_dashboard">
<p>When $a \ne 0$, there are two solutions to \(ax^2 + bx + c = 0\) and they are $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$</p>
</div>
<div class="div_footer">
<a href="#" class="button ryt_btn" id="answer_submit">SUBMIT</a>
<a href="#" class="button ryt_btn" id="next_q">NEXT</a>
<a href="#" class="button ryt_btn" id="skip_q">SKIP</a>
</div>
<script>
$(document).ready(function(){
$('#next_q').click(function(){
$("#next_q").hide();
$('#answer_submit').show();
$("#skip_q").show();
$.ajax({
type: 'POST',
url: '../ajax/next_question.php',
//data:{queslist:queslist, current_qorder:current_qorder},
success: function(msg){
$('#ques_dashboard').html(msg);
MathJax.Hub.Queue(["Typeset",MathJax.Hub,'ques_dashboard']);
}
});
return false;
});
});
</script>
PHP 调用者 AJAX
<?php?>
<p> If \(a, b, c\) are in HP, then \(\frac {1}{a}, \frac {1}{b}, \frac {1}{c}\) are in AP</p>
我在这里展示了简化的代码,其中包括很多 php 和 mysql。我能够成功显示 "next question" 但无法使用 Mathjax 进行排版。我试过使用 MathJax.Hub.Queue
函数。
我是 jquery 和 ajax 的新手。请帮忙。
问题是您需要转义 '\'
个字符,否则它们会被 jquery
和底层 javascript
解释。所以返回的字符串应该是这样的:
<?php?>
<p> If \(a, b, c\) are in HP, then \(\frac {1}{a}, \frac {1}{b}, \frac {1}{c}\) are in AP</p>
我在 Julien 的帮助下找到了问题所在。下面给出的代码片段在 ajax 调用后干扰了排版。(此队列函数隐藏文本直到排版完成。)
MathJax.Hub.Queue(function () {
document.getElementById("hide_page").style.visibility = "";});
评论这部分解决了问题。
如果我找到同时使用 ajax 和 "hide until typeset" 功能的方法,将更新答案。