PHP打印上带有vars的Javascript函数:引号

时间:2013-05-21 01:35:09

标签: php javascript function quotes

我只是想知道是否有更好的方法来记下传递给PHP打印内部调用的javascript函数的PHP变量。:

while($nav = mysqli_fetch_array($nav_db)){
    print  '<li>
             <a href="#" onclick="getProductPage('.$nav['id'].', \''.$name.'\')">
                       '.$nav['Data'].'

             </a>
        </li>';
}

,其中

$nav['id']

是一个INTEGER所以我不需要为JS添加额外的'和

$name

不是INTEGER所以我需要JS的那些\'\'。

特别是这一步:

getProductPage('.$nav['id'].', \''.$name.'\')

谢谢

3 个答案:

答案 0 :(得分:3)

<?php while($nav = mysqli_fetch_array($nav_db)): ?>
  <li>
     <a onclick="getProductPage(<?php echo $nav['id']; ?>, '<?php echo $name; ?>')">
        <?php echo $nav['Data']; ?>
     </a>
  </li>
<?php endwhile; ?>

你应该打破PHP写html。这样更干净。此外,您还有一个流氓</span>,并且<br>菜单中不需要<li>。 此外,a代码中应包含href值,即使它是#javascript:void(0)或其他内容。

答案 1 :(得分:1)

您应该使用json_encode将变量从php传递到javascript。这将确保没有未转义的字符可以破坏您的JavaScript。

所以json_encode($name)代替$name等等。

对于你的例子:

print  '<li>
         <a onclick="getProductPage(' . (int) $nav['id'].', ' . json_encode($name) . ')">
                   ' . htmlspecialchars($nav['Data']) . '

         </a>
    </li>';

答案 2 :(得分:0)

您是否考虑过使用jquery和ajax将数据发送到php文件并将json_encode数组发送回javascript?

例如

在使用数据类型json向php发送ajax调用之后,发回这样的vars

$data['id'] = nav['id'];

echo json_encode($data);

or just $nav['id']

echo json_encode($nav)

在你的javascript中。成功时,您可以像这样检索id值

ajax{(
    blah,
    blah,
    ...
    success(msg){
    alert(msg.id)
    }
})

您可以将var作为对象访问 上面的代码将提醒id的值。您可以将msg.id分配给javascript var或将其传递给函数... ect