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