2013-06-09 5 views
0

Я пытаюсь сделать автоматический предварительный просмотр математических уравнений. В принципе, пользователь вводит уравнение в текстовое поле, и оно будет отображаться ниже, все преувеличиваются в LaTEX с помощью mathjax. Я использовал этот пример в качестве модели http://www.w3schools.com/ajax/ajax_aspphp.aspRender mathjax динамически (ajax/php)

потому что я вызываю скрипт python из php, чтобы изменить пользовательский ввод, прежде чем я его покажу. Проблема в том, что это не правильно для меня. Вместо рендеринга отображается необработанный TEX (например, $ x^2 $).

Я видел страницу справки mathjax по этому вопросу, и я поместил строку кода в нижнюю часть моей, но она по-прежнему не отображается, как здесь: http://jsfiddle.net/Zky72/2/.

Я видел этот вопрос Rendering user input from dynamically created textarea using MathJax (который кажется похожим), но он вроде как смутно отвечает на свой вопрос.

Вот мой код:

сценарий:

function showHint(str) 
{ 
if (str.length==0) 
{ 
document.getElementById("txtHint").innerHTML=""; 
return; 
} 
if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
xmlhttp=new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange=function() 
{ 
if (xmlhttp.readyState==4 && xmlhttp.status==200) 
{ 
document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
} 
} 
xmlhttp.open("GET","preview.php?text="+str,true); 
xmlhttp.send(); 

MathJax.Hub.Queue(["Typeset",MathJax.Hub,"txtHint"]); 
} 

HTML:

<form> 
    Preview: <input type="text" onkeyup="showHint(this.value)"> 
</form> 
<p>Suggestions: <span id="txtHint"></span></p> 

Длинные шорты рассказ, я могу назвать питон просто отлично, и я могу обновить MathJax просто отлично , только не вместе. Заранее благодарю за любую помощь. Я чувствую себя плохо, задавая такой конкретный вопрос с таким количеством ресурсов, но я некоторое время стуча головой о стену над этим.

ответ

2

Вы делаете асинхронную ошибку. Не ставьте MathJax.Hub.Queue звонок в конце вашей функции после того, как вы пришлите запрос; поместите его в конце вашего обратного вызова, после получения ответа и обновления содержимого текстового поля. Таким образом, MathJax действительно будет иметь что-то, что бы сделать.

0

Вы попробовали \( вместо $? Просто дикая догадка.

Смежные вопросы