有趣。我有2个链接调用2个JS函数 - 第一个工作,第二个 - 没有。它只在参数为空时调用函数addns()。否则没有......
PHP:
while ($row_mem = mysqli_fetch_array($mem)) {
$membs[] = $row_mem['username'];
$membs_id[] = $row_mem['user_id'];
}
}
//FIRST FOREACH CALL PROPERLY
foreach($membs_id as $val_id) {
echo"<a href='javascript:addms($val_id)'><img src='$pcheck' width='66' height='68'
border='1' class='currmem'/></a> ";
}
//THIS ONE DOESN'T
foreach($membs as $mes_id) {
echo"<a href='javascript:addns($mes_id)'>$mes_id</a> ";
}
JS:
function addms(msid) {
var addm = msid;
alert(addm);
}
function addns(nsid) {
var addn = nsid;
alert(addn);
}
我看不到任何错误 - 感谢您的评论!
答案 0 :(得分:3)
更新以匹配新答案:
你需要在变量周围加上引号。 ($val_id)
可能有效,因为你正在检索一个我猜是整数的id,所以它是一个有效的JavaScript文字。
($mes_id)
可能不起作用,因为你得到了字符串但没有用引号括起来,所以它们不是有效的JavaScript文字。
所以用户名将是joe和shmoe,javascript becoems
addns(joe)
和addns(shmoe)
,这可能不是您想要的。您需要addns("joe")
和addns("shmoe")
。
另请注意,一旦您修复此问题,如果用户可以选择其用户名,则会出现XSS漏洞。
答案 1 :(得分:1)
见这里:http://us2.php.net/manual/en/function.echo.php
使用单引号将打印变量名称,而不是值
echo 'foo is $foo'; // foo is $foo
除了JavaScript函数需要它们之外,我无法看到你如何使用错误的引号,所以只是为了使一切变得简单,试试这个:
//FIRST FOREACH CALL PROPERLY
foreach($membs_id as $val_id) {
echo "<a href='javascript:addms(\"".$val_id."\")'><img src='".$pcheck."' width='66' height='68'
border='1' class='currmem'/></a> ";
}
//THIS ONE DOESN'T
foreach($membs as $mes_id) {
echo "<a href='javascript:addns(\"".$mes_id."\")'>".$mes_id."</a> ";
}