在PHP的回声中使用Javascript时的ReferenceError

时间:2015-12-04 06:41:33

标签: javascript php

以下是代码:

                <nav>
                  <ul id="alphabet" class="pagination">
                    <li><a href="#" onClick="alert(#);">#</a></li>
                    <?php
                        $letterArray = str_split(strtoupper("abcdefghijklmnopqrstuvwxyz"));
                        foreach ($letterArray as $s) {
                            echo '<li><a href="#" onClick="alert('.$s.');">'.$s.'</a></li>';
                        }
                    ?>
                  </ul>
                </nav>

当我点击一封信时,我得到了,例如:

Uncaught ReferenceError: N is not defined

如果我用“&#39;&#39;或&#34;&#34;,它只是警告&#34; $ s&#34;。我怎样才能转移&#34;这个变量到Javascript是一个实际的字符串,而不是字面上的变量?

3 个答案:

答案 0 :(得分:2)

您的foreach代码应为:

foreach ($letterArray as $s) {
                            echo '<li><a href="#" onClick="alert(\''.$s.'\');">'.$s.'</a></li>';
                        }

您正在通过$s而没有single quotedouble quote。因此,当您点击链接时,它会被视为function

因此,您可以将$s作为字符串backslash(\)传递。

答案 1 :(得分:1)

您需要向JavaScript提供此字符串:

alert("N")

要实现此目的,您需要打印

alert("

然后输出变量$s的值,然后输出

")

这一行将会这样做:

echo '<li><a href="#" onClick="alert("'.$s.'");">'.$s.'</a></li>';

或者(在我看来更好)是输出值的json_encode,它会自动为字符串添加引号,还会转义任何应该转义的字符(如引号):

echo '<li><a href="#" onClick="alert('.json_encode($s).');">'.$s.'</a></li>';
将数据传递给JavaScript时,

json_encode非常有用,因为它也可以处理数组和数字,而不仅仅是字符串。

答案 2 :(得分:0)

我宁愿这样做

                <nav>
                  <ul id="alphabet" class="pagination">
                    <li><a href="#" onClick="alert(#);">#</a></li>
                    <?php
                        $letterArray = str_split(strtoupper("abcdefghijklmnopqrstuvwxyz"));
                        foreach ($letterArray as $s) { ?>
                            <li><a href="#" onClick="alert('<?=$s?>');"><?=$s?></a></li>';
                   <?php } ?>
                  </ul>
                </nav>