javascript标签中的PHP标签

时间:2011-06-30 06:01:48

标签: php javascript

我正在尝试将JavaScript变量的值赋给php会话。请参阅下面的代码 -

<script type="text/javascript">
<?php $_SESSION['historyClass'] = "";?>

var myClass = $(this).attr("class");
if(myClass == 'trigger'){
  <?php $_SESSION['historyClass'] = "trigger";   ?>
}
else{
  <?php $_SESSION['historyClass'] = "trigger active"; ?>
}

alert('<?php echo $_SESSION['historyClass']; ?>')

</script>

在myClass变量中,我得到2个值 1)触发器 2)触发激活

无论我得到什么价值,我都希望将它存储在php会话中。但是当我提醒会话值时,它总是给我“触发器激活”。这意味着它总是会转向其他部分。我通过警告来检查'if'条件,控件在“If”和“else”部分正确进行。

有什么问题?我做错了吗?

提前致谢。

4 个答案:

答案 0 :(得分:3)

首先处理PHP,然后执行javascript,因此无法直接为php变量赋值。

相反,你可以从javascript(Ajax)发送http请求到php脚本来保存你的数据。

答案 1 :(得分:0)

这不起作用。 PHP在服务器上执行,而JS在客户端上执行。这意味着php在解析JS之前就已经运行了。如果你想从javascript运行PHP(特别是jQuery库及其“.get()”函数),我建议你看一下Ajax。

正在发生的事情是PHP被解析,并且没有看到任何JS,因此它正常运行,并将会话设置为触发,然后触发活动。然后javascript出现在客户端上,客户端看不到任何PHP代码,所以不运行它。

答案 2 :(得分:0)

这不会工作。 php代码在服务器端运行,js - 在客户端上运行。因此在向用户显示页面之前执行php。这意味着首先执行$_SESSION['historyClass'] = "trigger";而不是$_SESSION['historyClass'] = "trigger active";,显然值将为trigger active

答案 3 :(得分:0)

是的,你做错了什么。

javascript在客户端运行,php在服务器端运行。所以你的代码首先在服务器端运行,然后在客户端运行。 这就是为什么你不能像你那样做。将javascript数据传输到php脚本的常用方法是将值写入隐藏字段,以便将其提交给服务器。

只需创建一个隐藏字段,并使用javascript

中的值填充它
<script type="text/javascript">
    function valToPHP(name,value){
        document.getElementById(name).value = value;
    }
</script>
...
</head>
<body>
<input type="hidden" id="myField" name="myField" value="" />
...

然后你可以在你的php脚本中读取它

$_GET["myField"] or $_POST["myField"]

这取决于您的表单方法