-1

I have a session variable called $_SESSION['SESS_USER_TYPE'] in my php file which is set to a 2 character string. The php script redirects to an HTML file where I want to get the php session variable into a javascript variable.

I am using it in my javascript as follows, but I get nothing in the javascript variable.

var user_type = <?php echo $_SESSION['SESS_USER_TYPE']; ?>; 

This does not work.

Further to input received from other users, I tried the following :

var user_type = '<?php echo json_encode($_SESSION['SESS_USER_TYPE']) ?>';

Javascript returns a syntax error to the above.

I then tried

user_type = "<?php echo json_encode($_SESSION['SESS_USER_TYPE']) ?>";

This does not give an error in Javascript. However it returns the following value to user_type which is :

<?php echo json_encode($_SESSION['SESS_USER_TYPE']) ?>

$_SESSION['SESS_USER_TYPE'] is set to the string 'WO'.
4

3 に答える 3

4

そのセッション変数の値は正確には何ですか? 文字列の場合、無効な Javascript を生成し、構文エラーを引き起こしています。たとえば、次のようになります。

<?php

$x = 'hello';

?>
<script type="text/javascript">
var x = <?php echo $x; ?>;
</script>

あなたにあげます

var x = hello;

そしておそらく物事を爆破します。

PHP データを Javascript コード ブロックにダンプする場合、特に動的に JavaScript 値を作成する場合は、常にjson_encodeを使用します。

var x = <?php echo json_encode($x) ?>;

これにより、構文的に有効な JS を作成していることが保証されます。

于 2012-08-29T03:56:23.297 に答える
0

JavaScript のスニペットを含むファイルは、PHP で解析する必要があります。これを行う最も簡単な方法は、.php拡張機能を使用することです。PHP 変数とステートメントは、PHP 以外のファイルでは機能しません (そうするように Web サーバーを構成しない限り、それはおそらくこの質問の範囲外です)。セッション変数を使用するには、session_start().

例えば

some-file.php

<?php session_start() ?>
<!DOCTYPE html>
<html>

<!-- snip -->

<script>
    var user_type = '<?php echo $_SESSION['SESS_USER_TYPE']; ?>';
</script>

他の人が言ったように、JS 文字列を引用符で囲んでください。

于 2012-08-29T03:58:20.657 に答える
0

PHPスクリプトは、PHPセッション変数をJavaScript変数に取得したいHTMLファイルにリダイレクトします。

HTMLページでセッション変数の値を取得するにはどうすればよいですか?? そのためには PHP ページが必要です。そしてphpページでは、このようにすることができます

var user_type = "<?php echo $_SESSION['SESS_USER_TYPE']; ?>"; 
于 2012-08-29T03:59:22.840 に答える