让会话值可用于JavaScript的好方法是什么

What is a good way to make a session value available to JavaScript?

本文关键字:方法 是什么 JavaScript 用于 会话      更新时间:2023-09-26

当我的页面加载时,它将数据库中的一个id存储到会话中:Session["AppId"] = 1234。然而,当我做JavaScript的时候,我需要知道数据库调用的AppId。我如何从服务器代码中使其可用于我的JS?向var appId = 1234注册一个脚本标记是一种方法吗?还是代码闻起来有点太成熟了?

在body标记中添加自定义属性会更有意义吗?例如data-appid=1234

我是网络新手,所以做什么和不做什么对我来说并不总是显而易见的。如果有正确/最好的方法,请随时分享。

编辑:

我实际需要的解决方案是HttpContext.Current.Session["AppId"]。我不认为静态方法可以访问会话值,所以我认为我必须将其存储在标记中,以便通过Ajax调用传递给我的WebMethod。我接受了我的回答,因为它回答了我提出的问题。我只是问错了问题我是新来的,记住——放开我!

有很多方法可以做到这一点:

  • 正如您所发布的,data-*属性
  • 隐藏的表单字段(如果页面上有表单)
  • 嵌入URL
  • 将javascript输出到变量中

对于哪一个最好,目前还没有达成共识。

您可以创建隐藏字段或使用全局变量。

隐藏字段:

<input type="hidden" value='<%= Session["AppId"] %>'></input>

全局变量:

<script type="text/javascript">
window.AppId = '<%= Session["AppId"] %>';
</script>

我个人将会话值输出到全局变量,如下所示:

<script type="text/javascript">
    <?php
    if(isset($_SESSION["AppId"]))
    {
        echo "var AppId=".$_SESSION["AppId"].";";
    }
    else
    {
        echo "var AppId=null;";
    }
    ?>
</script>

或者

虽然我不确定你的客户端应用程序是如何运行的,但在实际进行数据库查询时,你能不检查AppID值服务器端吗?

这样,AppID值就永远不会显示给用户,他们也无法通过javascript篡改该值。