2011-06-30 13 views
1

JavaScript変数の値をPHPセッションに割り当てようとしています。私が得る、私はそれを保存したいと思うものは何でも値トリガーアクティブjavascriptタグのPHPタグ

)トリガ 2)MyClassの変数で

<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> 

、私は2つの値 1を取得しています - 以下の私のコードを参照してください。 PHPセッション。しかし、私はセッションの値を警告するとき、常に私に "トリガーアクティブ"を与えています。それは、常に他の部分に行くことを意味します。私はそれを警告することによって 'if'条件をチェックしました、制御は "If"と "else"部分で正しく行われています。

何が問題ですか?私は何か間違っているのですか?

ありがとうございます。

+0

[PHP変数にjs変数を渡す]可能な複製(http://stackoverflow.com/questions/4716177/pass-a-js-variable-to-a-php-variable) –

答えて

3

PHPが最初に処理されてからjavascriptが実行されるため、php変数に直接値を割り当てることは不可能です。

代わりに、javascript(Ajax)からhttpリクエストをPHPスクリプトに送信して、データを保存することができます。

+0

@All:OK ..ポイントを得た。迅速な返信をありがとう...実際に私はデータを保存したくありません。私がセッションで得られる価値がどんなものであれ、そのクラスを特定のdivに適用して、そのページをリフレッシュまたはポピュレートする必要があります。だから私はセッション内でmyClassの値を格納する唯一のソリューションがあります。 –

0

これは機能しません。 PHPはサーバー上で実行され、JSはクライアント上で実行されます。これは、JSが解析される前にphpが実行されていることを意味します。 JavaScript(特にjQueryライブラリとその ".get()"関数からPHPを実行する場合は、Ajaxを参照することをお勧めします。

PHPが解析され、JSが表示されないため、通常どおり実行され、セッションがトリガーされてアクティブになります。その後、javascriptがクライアント上に来ると、クライアントはPHPコードを見ないので、それを実行しません。

0

これは機能しません。 phpコードはサーバー側で実行されます(js)。ページがユーザーに表示される前にphpが実行されます。つまり、より先に$_SESSION['historyClass'] = "trigger active";が実行され、明らかに値はtrigger active

0

です。これは間違っていることを示しています。

javascriptはクライアントサイドで実行され、PHPはサーバサイドで実行されます。そのため、コードはまずサーバー側で実行され、次にクライアント側で実行されます。 あなたがそうしたようにあなたはそれをできないのです。 javascriptデータをPHPスクリプトに転送する一般的な方法は、隠しフィールドに値を書き込み、それがサーバーに送信されるようにすることです。

だけで隠しフィールドを作成し、その後、これは、フォームのあなたの方法に依存する

$_GET["myField"] or $_POST["myField"] 

のようなあなたのPHPスクリプトでそれを読むことができます

<script type="text/javascript"> 
    function valToPHP(name,value){ 
     document.getElementById(name).value = value; 
    } 
</script> 
... 
</head> 
<body> 
<input type="hidden" id="myField" name="myField" value="" /> 
... 

JavaScriptから値でそれを埋めます

+0

ソリューションありがとうございます。しかし、毎回私はフォームを提出していません。私は自分のページに多くのリンクを持っているので、すべてのリンクについて隠された価値を送ることはできません。 –