我正在尝试将从连接查询中获取的php值传递给javascript函数。 javascript函数将打开一个新窗口,并根据传递的值显示一些数据。我的查询工作正常,但php值没有传递给JS函数。
我的代码:
<script type="text/javascript">
function product(var) {
window.open( "view_product_info.php?var", "myWindow",
"status = 1, height = 300, width = 300, resizable = 0" )
}
</script>
\\ the line where i am trying to pass the php varibale
echo '<td align="center" ><a href="javascript:product('.$product_id.');"> <br/> '.$row['product_name'].'</a></td>';
为什么php值$ product_id没有传递给产品函数。
提前致谢。
代码:
<script type="text/javascript">
<!--
function product(var) {
window.open( "view_product_info.php?id", "myWindow",
"status = 1, height = 300, width = 300, resizable = 0" )
}
function company() {
window.open( "index.php", "myWindow",
"status = 1, height = 300, width = 300, resizable = 0" )
}
function category() {
window.open( "index.php", "myWindow",
"status = 1, height = 300, width = 300, resizable = 0" )
}
// - &GT;
<?php include("includes/header.php");
$search = $_POST['search'];
$sql= "my query1..";
$sql2= "my query2";
$result=mysql_query($sql);
$result2=mysql_query($sql2);
if($result) {
echo '<center>';
echo '<table cellpadding="0" cellspacing="0" border="1" width="100%">';
echo '<tr><th>Sr No.</th><th>Product Name</th><th>Company Name</th> <th>Category</th></tr>';
$number=1;
while ($row = mysql_fetch_array($result)){
$row2 = mysql_fetch_array($result2);
echo $product_id=$row2[product_id];
echo '<tr> ';
echo '<td align="center" >'.$number.'</td>';
echo '<td align="center" ><a href="javascript:product('<?= $product_id?>')">
''';
echo '<td align="center"><a href="javascript:company()" ><br/> '.$row['company_name'].'</td>';
echo '<td align="center"><a href="javascript:category()" ><br/> '.$row['category_name'].'</td>';
$number=$number+1;
}echo '</tr>';
echo'</table>';
echo'</center>';
}
else {
echo "No data found";
//echo mysql_error();
}
}
}
?>
答案 0 :(得分:1)
如果不是数字,则需要引用它:
<?php
echo '<td align="center" ><a href="javascript:product(\''.$product_id.'\');">
<br/> '.$row['product_name'].'</a></td>';
?>
或者,更简洁的方法,在需要时使用php(没有PHP标签,它是插入PHP的HTML):
<td align="center" ><a href="javascript:product('<?= $product_id ?>')">
<br/><?= $row['product_name'] ?></a></td>
您还可以定义JavaScript值并为其分配PHP值,然后使用它,例如:
var pid = '<?= $product_id ?>'; // then call product(pid)
etc...
修改
代码修复。
这:
<?php
...
// php stuff
...
echo '<tr> ';
echo '<td align="center" >'.$number.'</td>';
echo '<td align="center" ><a href="javascript:product('<?= $product_id?>')">
<br/>'<?= $row['product_name']?>'</a></td>';
echo '<td align="center"><a href="javascript:company()" ><br/> '.$row['company_name'].'</td>';
echo '<td align="center"><a href="javascript:category()" ><br/> '.$row['category_name'].'</td>';
$number=$number+1;
}echo '</tr>';
echo'</table>';
echo'</center>';
可以成为这样的东西:
<?php
...
// php stuff
...
?> // close the PHP tag and switch to HTML
<tr>
<td align="center" ><?= $number ?></td>
<td align="center" ><a href="javascript:product('<?= $product_id?>')"> <br/>'<?= $row['product_name']?>'</a></td>
<td align="center"><a href="javascript:company()" ><br/> <?= $row['company_name'] ?></td>
<td align="center"><a href="javascript:category()" ><br/> <?= $row['category_name'] ?></td>
<?php // reopen PHP tag when needed
$number++; // incrementation simplified
}
?> // close again
</tr>
</table>
</center>
类似的东西。
另外,请阅读here关于已弃用的mysql_ *函数以及切换到mysqli_ *或PDO的原因。
答案 1 :(得分:1)
试试这个:
...
...
</script>
\\ the line where i am trying to pass the php varibale
<?php
echo '<td align="center" ><a href="javascript:product('.$product_id.');"> <br/> '.$row['product_name'].'</a></td>';
?>
答案 2 :(得分:0)
执行此操作时需要小心,因为它可能允许黑客在许多情况下接管您的服务器。
正确的方法是使用json_encode
和htmlspecialchars
。不做两者都是安全风险。阅读每个文档,了解他们的工作。
这是正确,安全的方法:
$escaped_product_id = htmlspecialchars(json_encode($product_id));
$escaped_product_name = htmlspecialchars($row['product_name']);
echo '<td align="center" ><a href="javascript:product('.$escaped_product_id.');"> <br/> '.$escaped_product_name.'</a></td>';