我在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>
以后的代码不起作用。 我做错了什么?
答案 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)
<a href="'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid=<?PHP echo $temprow['templateid']; ?>">.....
答案 3 :(得分:0)
你需要在参数
周围使用转义双引号...submittemplate(\"".$temprow['templateid']."\");'>".
因为你传递字符串