将字符串从PHP传递给锚标记的onclick处理程序

时间:2012-07-17 08:11:04

标签: php javascript alert

我正在尝试将服务器端的值传递给onclick标记的a处理程序,但是当我点击链接时,它会在客户端提供不同的结果。

我的PHP代码:

$any="link1";
echo(" <a id='link1' href='#' onclick='VisibleFalse($any)'>[+]</a><span><b>$candidatename</b></span>");

我想将字符串"link1"传递给函数VisibleFalse,该函数将字符串显示为警告:

function VisibleFalse(ID)
{
    alert(ID);
}

但它正在警报中打印"http://localhost/..."

我很感激您的任何建议。

3 个答案:

答案 0 :(得分:3)

问题是,你传递的是一个字符串而忘记为它添加引号,以便结果成为JavaScript函数中的一个字符串。这是一个更好的方式来看待这个:

$any="link1";
// First, echo isn't a function. It can be faked to be used as one, but that's not recommended
// Second, sort out your quoting like this:
echo '<a id="link1" href="#" onclick="VisibleFalse(\''.$any.'\')">[+]</a><span><b>'.$candidatename.'</b></span>';

// OR
echo "<a id='link1' href='#' onclick='VisibleFalse(\"$any\")'>[+]</a><span><b>$candidatename</b></span>";

答案 1 :(得分:0)

必须引用JavaScript中的字符串文字。

onclick='VisibleFalse(&quot;$any&quot;)'>

(但是内部事件属性被认为是更加痛苦然后它们是值得的,就像嵌入在PHP中的HTML中嵌入的Javascript一样。请改用unobtrusive JavaScript。)

您还需要确保$any不包含任何可以终止字符串文字的引号字符(并且您可能应该使用htmlspecialchars使其安全,因此它不会终止属性值)

答案 2 :(得分:0)

使用与引用&#39;等效的HTML Unicode(其他字符可以here)。

echo(" <a id='link1' href='#' onclick='javascript:VisibleFalse(&#39;$any&#39;)'>[+]</a><span><b>$candidatename</b></span>");