我有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;
我该怎么做?
答案 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个选项:
从PHP生成整个js代码及其所有变量。很像你如何生成HTML。
使用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';
输出。