如何将PHP变量传递给Javascript?

时间:2010-07-22 06:31:41

标签: php javascript

我有2个页面,一个PHP和一个Javascript。 我想在一个页面上传递这个PHP脚本中的变量:

$strFind="SELECT * FROM  cometchat_chatrooms_users WHERE userid=$curmemid";
$result=mysql_query($strFind) or die(mysql_error());
$row=mysql_fetch_array($result);
$room=$row['chatroomid'];

在另一页上的这个Javascript:

var timestamp = 0;
var currentroom = $room;
var heartbeatTimer;
var minHeartbeat = 3000;
var maxHeartbeat = 12000;

我该怎么做?

7 个答案:

答案 0 :(得分:8)

当PHP由PHP生成时,您可以执行此操作。给出的例子:

<?php
...
$curmemid = intval($externalValue);
$strFind = 'SELECT * FROM cometchat_chatrooms_users WHERE userid='.$curmemid;
$result = mysql_query($strFind) or die(mysql_error());

if (isset($result)) {
    $row = mysql_fetch_array($result);
    $room = $row['chatroomid'];
} else
{
    echo 'There is something wrong!';
    $room = -1;
}
...
?>
<script type="text/javascript">
var timestamp = 0;
var currentroom = <?php echo $room; ?>;
var heartbeatTimer;
var minHeartbeat = 3000;
var maxHeartbeat = 12000;
</script>

答案 1 :(得分:3)

<?php

$strFind="SELECT * FROM  cometchat_chatrooms_users WHERE userid=$curmemid";
$result=mysql_query($strFind) or die(mysql_error());
$row=mysql_fetch_array($result);
$room=$row['chatroomid'];

?>
<script type="text/javascript">
var timestamp = 0;
var currentroom = <?php if(isset($room))echo $room; else echo ""; ?>;
var heartbeatTimer;
var minHeartbeat = 3000;
var maxHeartbeat = 12000;
</script>

答案 2 :(得分:2)

另一个选择是PHP输出一个带有变量的隐藏元素,然后JS读取它。

例如

<?php
echo '<input type="hidden" id="myvar" value='.$val.' />';
?>

然后在JS

 var v = document.getElementById("myvar");
 // do something with v.value

当然,这很容易受到客户的欺骗,所以请注意两点:

1)只有在任何用户都无法看到变量值的问题时(例如通过查看来源),才能使用此功能

2)如果JS做任何可能“危险”的事情,例如对PHP页面进行异步调用,该页面在DB中使用该值执行某些操作,请确保在第二个PHP页面(不在JS中)中进行适当的检查,以确保该值未被篡改

答案 3 :(得分:2)

你实际上无法在任何地方“传递”变量。但只有一个标量值。坦率地说,您只能传递文本数据 因此,在javascript的情况下,您有2个选项:

  1. 从PHP生成整个js代码及其所有变量。很像你如何生成HTML。

  2. 使用AJAX技术从浏览器中运行的JS请求一些变量。

答案 4 :(得分:1)

您可以使用其他页面$ _SESSION

<script type="text/javascript">
var timestamp = 0;
var currentroom = <?php echo $_SESSION['room']; ?>;
var heartbeatTimer;
var minHeartbeat = 3000;
var maxHeartbeat = 12000;
</script>

对于相同的文件/脚本序列 - 它非常简单,不需要SESSION

   var currentroom = <?php echo $room; ?>;

答案 5 :(得分:0)

尝试使用Session来存储你的房间变量,并通过echo指令将其与javascript一起使用

答案 6 :(得分:-2)

代码将按原样运行。当你的php生成输出(html和javascript)时,它已经完成了替换。所以你的价值将作为文字插入那里。如果它是一个字符串,你仍然需要引用它。

var currentroom ='$ room';

将成为

var currentroom ='myroom';

输出。