0

我在 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

4 回答 4

1

如果mode变量是 astring这将引发错误。

例如alert(myString Is Here) // throw error

它应该是alert("myString Is Here");

所以你必须添加报价是这样的:

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

注意\"

于 2012-09-03T09:16:31.130 回答
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>

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

于 2012-09-03T09:26:54.467 回答
1
  1. 不要使用 javascript: 协议,使用 onclick 并返回 false
  2. 为什么要使用 JavaScript ???
  <a href="'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid=<?PHP echo $temprow['templateid']; ?>">.....
于 2012-09-03T09:30:02.907 回答
0

您需要在参数周围使用转义的双引号

...submittemplate(\"".$temprow['templateid']."\");'>".

因为你正在传递字符串

于 2012-09-03T09:11:54.883 回答