php写一个onkeyup = function

时间:2016-04-13 12:27:55

标签: javascript php json

我正在编写一个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

由于 亚历

1 个答案:

答案 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\'}]}')"