在javascript函数中传递多个参数

时间:2012-09-03 09:10:31

标签: php javascript

我在Php中有一个预编写的代码,其中称为JavaScript函数

echo "<a href='javascript:submittemplate(".$temprow['templateid'].");'>".$temprow["templatename"]."</a></td>";

,脚本是:

  <script>
        function submittemplate(templateid)
        {

            window.document.location.href = 'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid='+templateid;

        }
 </script>

现在我想在这个函数中再传递一个参数。
我的所作所为:

echo "<a href='javascript:submittemplate(".$temprow['templateid'].",".$mode.");'>".$temprow["templatename"]."</a></td>";


<script>
function submittemplate(templateid,mode)
{
alert("anything");
    window.document.location.href = 'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid='+templateid;

}
</script>

以后的代码不起作用。 我做错了什么?

4 个答案:

答案 0 :(得分:1)

如果mode变量是string,则会引发错误。

e.g。 alert(myString Is Here) // throw error

应为alert("myString Is Here");

所以你必须加上引用如下:

echo "<a href='javascript:submittemplate(".$temprow['templateid'].",\"".$mode."\");'>"

请注意\"

答案 1 :(得分:1)

我猜你会因为输出的值而产生无效的Javascript语法。打开浏览器的Javascript控制台以调试您的Javascript并查看任何错误。

将PHP值输出到Javascript时,应确保它们不会破坏语法。最好的方法是对它们进行JSON编码,因为JSON是有效的文字Javascript。正如您还应该在HTML中对您的值进行HTML编码:

<a href="javascript:submittemplate(<?php echo htmlspecialchars(json_encode($temprow['templateid']), ENT_COMPAT); ?>, <?php echo htmlspecialchars(json_encode($mode), ENT_COMPAT); ?>);"><?php echo htmlspecialchars($temprow["templatename"]); ?></a></td>

由于这是一个非常难以理解的单行,您应该考虑使用Javascript将onclick事件绑定到链接,而不是使用href="javascript:"目标。请参阅http://en.wikipedia.org/wiki/Unobtrusive_Javascript#Separation_of_behavior_from_markup

答案 2 :(得分:1)

  1. 请勿使用javascript:协议,请使用onclick并返回false
  2. 为什么要使用JavaScript ???
  3.    
      <a href="'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid=<?PHP echo $temprow['templateid']; ?>">.....
    

答案 3 :(得分:0)

你需要在参数

周围使用转义双引号
...submittemplate(\"".$temprow['templateid']."\");'>".

因为你传递字符串