我想在javascript函数中插入javascript值到php会话变量中。
这是我尝试过的,但它无效:
function languageChange()
{
var lang = $('#websites1 option:selected').val();
<?php $_SESSION['SESS_LANGUAGE']?> = lang;
alert(<?php echo $_SESSION['SESS_LANGUAGE']?>);
}
答案 0 :(得分:6)
您无法直接访问它(您的方式)。但是,它可以使用AJAX完成。 这是一个完美的解决方案。
这是HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>1</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<label for="websites1">Websites</label>
<select name="websites1" id="websites1">
<option value="Design">Design</option>
<option value="Dev">Dev</option>
<option value="Ecom">Ecom</option>
</select>
</form>
<script type="text/javascript" src="js/jquery_1.7.1_min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
function languageChange()
{
var lang = $('#websites1 option:selected').val();
return lang;
}
$('#websites1').change(function(e) {
var lang = languageChange();
var dataString = 'lang=' + lang;
$.ajax({
type: "POST",
url: "pass_value.php",
data: dataString,
dataType: 'json',
cache: false,
success: function(response) {
alert(response.message);
}
});
return false;
});
});
</script>
</body>
</html>
这是AJAX部分:
//pass_value.php
<?php session_start();
$_SESSION['SESS_LANGUAGE'] = $_POST['lang'];
$_SESSION['SESS_LANGUAGE'] = 'This is my PHP session var --->'.$_SESSION['SESS_LANGUAGE'];
print json_encode(array('message' => $_SESSION['SESS_LANGUAGE']));
die();
?>
编辑1:
运行代码后,只需从下拉菜单中选择任何其他选项,您将收到一条警报,提供php会话变量的值以及我添加到其中的自定义文本。
编辑2:
如果您想在最后运行我的解决方案,请确保正确指向核心jQuery js文件。我的jquery代码指向src="js/jquery_1.7.1_min.js"
。请务必更新。
答案 1 :(得分:0)
Javascript无权访问PHP变量。客户端(Web浏览器/ javascript)只能访问与会话关联的Cookie或Cookieless ID(Querystring)。
会话以这种方式使用,目的是不让客户端修改与会话关联的设置,而无需通过服务器。较不“安全”的方法是将cookie用于所有设置。像语言设置这样的东西可能是存储在cookie而不是会话中的好主意。
为了解决这个问题,您可以创建一个页面,其中包含会话属性名称(如“SESS_LANGUAGE”)以及使用php将其置于会话中的值。我强烈反对这一点,因为任何用户都可以设置任何会话变量。
我能想象到的最好的方法是向一个页面发送一个AJAX调用,说你要更改语言。
被调用的URL将是这样的: changelanguage.php?LANG = EN_US
和changelaguange.php的php代码: $ _SESSION ['SESS_LANGUAGE'] = $ _GET ['lang'];