php编写onkeyup=函数


php writing a onkeyup= function

我正在编写一个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'}]}")" 

然而,它一直不起作用。。。错误包括对缺少}的抱怨,MathJax(eval()样式库)未定义。

我确信这就是我解析标记onkeyup部分的方式,但我无法获得正确的组合/语法。

有人能看到明显的问题吗?:S

谢谢Alex

尽管您正在转义PHP文件中的引号,但javascript解析器中的引号不会被转义。将onKeyUp中的引号更改为单引号可以解决此问题。您还需要转义JSON中的引号——json_encode()函数可以帮助您做到这一点。您需要输出以下内容:

onkeyup="checkContentQuizAnswer('#theonlyvariable','27.62*5','{''incorrect_values'':[{''equation'':''27.62+5'',''message'':''you added 5''},{''equation'':''27.62-5'',''message'':''you subtracted 5''}]}')"