将php变量作为参数传递给javascript

时间:2012-04-21 03:15:05

标签: php javascript ajax

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

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

2 个答案:

答案 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;