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 を使用してセッションに入れる値を取るページを作成できます。すべてのユーザーが任意のセッション変数を設定できるため、これには強くお勧めしません。

私が想像できる最善の方法は、言語を変更したいというAJAX呼び出しをページに送信することです。

呼び出される URL は次のようになります: changelanguage.php?lang=en_US

そして、changelaguange.php の php コード: $_SESSION['SESS_LANGUAGE'] = $_GET['lang'];

于 2012-07-18T11:26:35.190 に答える