Link不调用JS函数

时间:2011-10-08 23:30:27

标签: php javascript jquery

有趣。我有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>&nbsp;";
 }


//THIS ONE DOESN'T 
foreach($membs as $mes_id) {
echo"<a href='javascript:addns($mes_id)'>$mes_id</a>&nbsp;";
}

JS:

 function addms(msid) { 
 var addm = msid;
 alert(addm);
 }

function addns(nsid) { 
var addn = nsid;

alert(addn);




}

我看不到任何错误 - 感谢您的评论!

2 个答案:

答案 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>&nbsp;";
 }


//THIS ONE DOESN'T 
foreach($membs as $mes_id) {
echo "<a href='javascript:addns(\"".$mes_id."\")'>".$mes_id."</a>&nbsp;";
}