4

当我的页面加载时,它将数据库中的 id 存储到 session:Session["AppId"] = 1234中。但是,当我在做 JavaScript 的事情时,我需要知道用于数据库调用的 AppId。如何从服务器代码使我的 JS 可以使用它?注册一个脚本标签var appId = 1234是可行的方法还是该代码闻起来有点太成熟了?

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

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

编辑:

我真正需要的解决方案是HttpContext.Current.Session["AppId"]. 我不认为静态方法可以访问会话值,所以我认为我必须将它存储在标记中才能通过 Ajax 调用传递给我的 WebMethod。我接受了我所做的答案,因为它回答了我提出的问题。我只是问错了问题。=) 我是新人记得 - 放轻松!

4

3 回答 3

4

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

隐藏字段:

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

全局变量:

<script type="text/javascript">
window.AppId = '<%= Session["AppId"] %>';
</script>
于 2012-09-05T19:04:49.137 回答
4

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

  • 正如您发布的那样,一个data-*属性
  • 隐藏的表单域(如果页面上有表单)
  • 嵌入网址
  • 输出到 javascript 到一个变量中

哪个是最好的没有共识。

于 2012-09-05T19:05:16.717 回答
0

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

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

或者...

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

这样,AppID 值永远不会显示给用户,他们将无法通过 javascript 弄乱该值。

于 2012-09-05T19:11:13.537 回答