1

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

谢谢

4

3 回答 3

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)或什么。

于 2013-05-21T01:39:17.000 回答
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>';
于 2013-05-21T01:40:44.903 回答
0

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

例子

在使用数据类型 json 向 php 发送 ajax 调用后,像这样发回 var

$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

于 2013-05-21T01:45:32.163 回答