我正在编写一个php脚本,它使用javascript onkeyup事件生成html,如下:
// 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'}]}")"
然而,它一直没有工作......错误包括有关miss}的投诉,MathJax(一个eval()样式库)是未定义的。
我确定这是我如何解析标签的onkeyup部分,但我不能正确地获得组合/语法。
有人能看到明显的问题吗? :S
由于 亚历
答案 0 :(得分:0)
虽然您正在转义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\'}]}')"