2

我想将 javascript 值插入到 php 会话变量中,但在 javascript 函数中。

这是我尝试过的,但它不起作用:

function languageChange()
{
 var lang = $('#websites1 option:selected').val();
 <?php $_SESSION['SESS_LANGUAGE']?> = lang;
 alert(<?php echo $_SESSION['SESS_LANGUAGE']?>);
}
4

2 回答 2

9

你不能直接访问它(你正在做的方式)。但是,它可以使用 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". 确保你更新这个。

于 2012-07-18T12:01:22.087 回答
0

Javascript 无法访问 PHP 变量。客户端(Web 浏览器/javascript)只能访问与会话关联的 Cookie 或 Cookieless ID(查询字符串)。

以这种方式使用会话的目的是为了不让客户端在不通过服务器的情况下修改与会话关联的设置。不太“安全”的方式是对所有设置使用 cookie。将语言设置之类的东西存储在 cookie 中而不是会话中可能是个好主意。

为了解决这个问题,您可以制作一个页面,该页面带有一个会话属性名称(如您的“SESS_LANGUAGE”)和一个使用 php.ini 将其放入会话中的值。我强烈建议不要这样做,因为任何用户都可以设置任何会话变量。

我能想象的最好的方法是你向一个页面发送一个 AJAX 调用,说你想改变语言。

被调用的 URL 是这样的:changelanguage.php?lang=en_US

以及 changelagunge.php 的 php 代码: $_SESSION['SESS_LANGUAGE'] = $_GET['lang'];

于 2012-07-18T11:26:35.190 回答