我想在javascript中使用会话变量值

时间:2014-01-10 12:38:49

标签: php

这里我想在javascript函数中使用会话变量的值。我试过了

var varname = '<?php echo $_SESSION["variable_name"]; ?>';

但是它没有传递它显示字符串的值

那么如何在javascript中使用php的会话变量。

其实我想在java脚本端查看验证码。 在这里我已经制作了contactus.php文件,其中我从rand函数生成验证码值。然后我将此值存储在会话变量中。在这里,我已经使validation.js文件验证联系我们表单字段,所以在同一个文件中我想验证captha所以我一直在尝试下面的代码,但它不起作用。

var cap = document.frm.captcha.value;
var ca = '<?= addslashes($_SESSION["code"]); ?>';
alert (cap); //ITs shows my entered value perfectly
alert (ca); //but it doesn't show generated captcha value. it simply print '<?= addslashes($_SESSION["code"]); ?>'//

if(cap!=ca)
{
    alert("Insert correct captcha code");
    document.frm.captcha.focus();
    return false;
}

我检查了会话变量值,它在php页面上正常工作但是dosen; t在javascript页面上工作。

4 个答案:

答案 0 :(得分:0)

试试这样:

<script type="text/javascript">
var varname = <?php echo $_SESSION["variable_name"]; ?>;
</script>

答案 1 :(得分:0)

<script type="text/javascript">
    <?php echo "var variable = '". $_SESSION['variable']."';" ?>;
</script>

答案 2 :(得分:0)

包含此代码的文件必须命名为.php,并且必须是PHP文件开头的session_start();

然后这段代码应该有用。

答案 3 :(得分:0)

有几个可能性,为什么你的代码没有工作。

  1. 变量中存在错误(例如未转义的引用)
  2. 代码不在Javascript代码中。
  3. 会话在获取变量时没有启动
  4. 要修复这3个错误,您需要使用以下代码 -

    <?php session_start(); ?>
    <script type="text/javascript">
        var varname = '<?= addslashes($_SESSION['variable_name']); ?>';
    </script>
    

    如果您的会话变量不是字符串或数字,则需要将其打包到JSON对象。在这种情况下,您可以进行以下操作:

    <?php session_start(); ?>
    <script type="text/javascript">
        var varname = <?= json_encode($_SESSION['variable_name']); ?>;
    </script>
    

    最后一个代码变体将使所有类型的变量对JS都很友好。也是字符串。

    例如,使用asd'd"sa字符串中的json_encode,您将获得"asd'd\"sa"字符串。

    <强> UPD: 如果您像JS文件一样使用此文件,如下所示:

    <script type="text/javascript" src=".../path/to/file.php"></script>
    

    正确的工作,您需要使用以下代码。

    <?php 
    session_start();
    header('Content-Type: text/javascript');
    ?>
    var varname = '<?= addslashes($_SESSION['variable_name']); ?>';