我正在尝试调用一个javascript函数,其中一个参数是从下拉框中获取的变量。如果仅使用“this.value”从当前下拉框传递值,则此脚本可以正常工作,但是当尝试传递变量时,代码不起作用。当我使用echo语句时,正确地从下拉框中的值填充变量。我认为问题在于实际将变量传递给javascript函数。函数showSection(q,r)永远不会被调用,因为write语句永远不会执行。任何帮助,将不胜感激。这是我的php和javascript代码
echo "<select name=\"course\" onchange=\"showSection($q, this.value)\">";
答案 0 :(得分:0)
如果$ q或this.value是字符串值,则必须在引号内传递它。
echo "<select name='course' onchange='showSection(\"$q\", \"this.value\")'>";
答案 1 :(得分:0)
您需要确保插入$q
的值不会产生javascript语法错误。合理的方法是在值上使用json_encode
。
之后,你需要确保单引号和双引号都在该值中转义,以保持html正确。 htmlspecialchars
用于此目的。在我看来,转换单引号和双引号总是(ENT_QUOTES
)是最好的选择。
最终结果是(我在这里使用heredoc语法,因为我发现它更具可读性):
$escaped = htmlspecialchars(json_encode($q), ENT_QUOTES);
echo <<<HTML
<select name="course" onchange="showSection($escaped, this.value);">
HTML;