为什么这个简单的PHP代码行在JS中导致错误

时间:2015-09-17 00:50:22

标签: javascript php jquery

以下代码在控制台中显示错误AddQueue

unexpected token '<'

所以我试过了:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"> </script>
<div id="e">hi</div>
<script>
        // var commentId= "<?php echo $comment_id; ?>";
$(function(){
    $("#e").click(function(){
        alert("hi");
    })
})
</script>

有效。但我不明白为什么下面的评论部分会影响javascript的运行。

   <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"> </script>
    <div id="e">hi</div>
    <script>
    $(function(){
        $("#e").click(function(){
            alert("hi");
        })
    })
    </script>

2 个答案:

答案 0 :(得分:2)

德里克,

你问题的核心,除了这里所说的是你用//注释掉你的javascript行,然而,这并不能阻止<?php echo $comment_id; ?>的执行。

所以$ comment_id中的任何值仍然被回显到浏览器。当您使用嵌入式php变量的javascript时,这有时会令人困惑。请记住,php语句在服务器上进行评估和执行,直到脚本存在于浏览器中才会执行javascript。

因此,如果你想对被注释掉的整行发现真的很啰嗦,你可以写:

// var commentId= "`<?php //echo $comment_id; ?>`";

至少在理论上......我实际上没有测试过。

答案 1 :(得分:0)

与我的评论相反,这实际上是一种更好的方法:

var commentId = <?php echo json_encode($comment_id); ?>;

json_encode实际上能够将JSON可以处理的任何类型转换为JavaScript安全版本 - 数字,字符串,数组,布尔值,空值。