我想用jquery事件更改php $ _SESSION。在下面的代码$ _SESSION ['lang']不要改变
$('[id^="lang_"]').click(function(){
alert('<?php echo $_SESSION['lang']; ?>');
lang_id = $(this).attr('id').split(/\_/);
alert(lang_id[1]);
switch( lang_id[1] ){
case '1':
//lang_id[1] is 1
<?php unset($_SESSION['lang']); $_SESSION['lang'] = null; $_SESSION['lang'] = '11111'; ?>
break;
case '2':
//lang_id[1] is 2
<?php unset($_SESSION['lang']); $_SESSION['lang'] = null; $_SESSION['lang'] = '22222'; ?>
break;
}
我没有任何问题来获得正确的lang_ id。但是$_SESSION['lang']
不会改变任何地方
答案 0 :(得分:4)
我实际上有点无言以对。 :)
好的......
Javascript(和jQuery)在访问者浏览器上运行。
PHP在您网站所在的网络服务器上运行。
您无法在Javascript中运行PHP代码。您可以将PHP变量输出到JS函数中以定义特定值,如var value='<?php echo $theValue ?>';
- 但您无法在JS代码的运行中运行PHP逻辑。
如果你想这样做,你需要你的Javascript / jQuery来对一个你想要的PHP页面进行ajax调用。
$('[id^="lang_"]').click(function(){
alert('<?php echo $_SESSION['lang']; ?>');
lang_id = $(this).attr('id').split(/\_/);
alert(lang_id[1]);
switch( lang_id[1] ){
case '1':
setLanguage('11111');
break;
case '2':
setLanguage('22222');
break;
}
function setLanguage(lang){
$.post('setLanguage.php', {language:lang}, function(){
alert('Language has been changed');
//if you want to reload the current page
//window.location=window.location.href;
});
}
然后,您的setLanguage.php
页面看起来应该是这样的
<?php
unset($_SESSION['lang']);
$_SESSION['lang'] = null;
$_SESSION['lang'] = $_POST['language'];
?>
请记住,虽然这会根据需要更改$ _SESSION变量,但在刷新页面(或执行其他手动操作)之前,它不会影响页面的外观/动作方式。老实说,如果您需要刷新页面以查看更新,那么我甚至可能不会使用ajax并直接将用户定向到setLanguage.php
并让该页面将其重定向回原来的位置。
答案 1 :(得分:0)
如果您编写<?php ...?>
,则在将文件提供给客户端之前,此代码将在Serverside上执行。这意味着两个php语句都是在客户端获得响应之前执行的。您无法混合客户端代码和服务器端代码,因为服务器端代码在响应发送到客户端之前执行。