我正在尝试将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”部分正确进行。
有什么问题?我做错了吗?
提前致谢。
答案 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"]
这取决于您的表单方法