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

Javascript function with vars on PHP print: quotes

本文关键字:函数 print 引号 Javascript vars PHP      更新时间:2023-09-26

我只是想知道是否有更好的方法来写下传递给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']

是一个整数,所以JS和不需要额外的">

$name

不是整数,所以JS需要这些"''"。

特别是这一步:

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

感谢

<?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>,在<li>菜单中不需要<br>。此外,a标签中应该有一个href值,即使它是#javascript:void(0)或其他什么。

您应该使用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>';

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

示例

在向php发送数据类型为json的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