我正在编写一个用javascript onkeyup事件生成html的php脚本,如下所示:
// generate the function text
$fn_text = "checkContentQuizAnswer(\"#".$var_name."\",\"".$equation_solutions_array[0][0]."\",\"{'incorrect_values':[";
for($r=1;$r<count($equation_solutions_array);$r++) {
// THIS ISNT WORKING CORRECTLY, NEED A BETTER WAY TO PASS INCORRECT INFO
$fn_text .= "{'equation':'".$equation_solutions_array[$r][0]."','message':'".$equation_solutions_array[$r][1]."'}";
if(($r+1)<count($equation_solutions_array)) {
$fn_text .= ",";
}
}
$fn_text .= "]}\")";但是这不起作用..。它生成的代码如下所示:
onkeyup="checkContentQuizAnswer("#theonlyvariable","27.62*5","{'incorrect_values':[{'equation':'27.62+5','message':'you added 5'},{'equation':'27.62-5','message':'you subtracted 5'}]}")" 然而,它并没有起作用。错误包括关于缺少}的投诉,MathJax ( eval()样式库)未定义。
我确信这是我解析标签的onkeyup部分的方式,但是我不能得到正确的组合/语法。
有人能看到一个明显的问题吗?
谢谢,亚历克斯
发布于 2016-04-13 20:39:40
尽管您转义了PHP文件中的引号,但javascript解析器中的引号并未转义。将onKeyUp中的引号更改为单引号以解决此问题。您还需要转义JSON中的引号- json_encode() function可以帮助您做到这一点。您需要输出如下内容:
onkeyup="checkContentQuizAnswer('#theonlyvariable','27.62*5','{\'incorrect_values\':[{\'equation\':\'27.62+5\',\'message\':\'you added 5\'},{\'equation\':\'27.62-5\',\'message\':\'you subtracted 5\'}]}')" https://stackoverflow.com/questions/36598377
复制相似问题