0

我正在尝试调用一个 javascript 函数,其中一个参数是从下拉框中获取的变量。如果仅使用“this.value”从当前下拉框中传递值,则此脚本可以正常工作,但是当尝试传递变量时,代码不起作用。当我使用 echo 语句时,该变量已从下拉框中的值正确填充。我认为问题在于实际上将变量传递给 javascript 函数。函数 showSection(q, r) 永远不会被调用,因为 write 语句永远不会执行。任何帮助,将不胜感激。这是我的 php 和 javascript 代码

echo "<select name=\"course\" onchange=\"showSection($q, this.value)\">";
4

2 回答 2

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;
于 2012-04-21T10:31:18.643 回答
0

如果 $q 或 this.value 是字符串值,则必须在引号内传递它。

echo "<select name='course' onchange='showSection(\"$q\", \"this.value\")'>";
于 2012-04-21T09:40:06.613 回答