繁体   English   中英

如何从单独的JavaScript文件中获取会话变量?

[英]How can I get session variable from separate JavaScript file?

我在GoogleOauth2.js文件中有简单的代码

function storedAccsessToken(token) {
    $.ajax({
        type: "GET",
        url: '<%=HttpContext.Current.Request.ApplicationPath %>/SaveToken.ashx?accToken=' + token,
        dataType: "text",
        complete: function (resp, status) {
            if (status == "success" || status == "notmodified") {
                if (resp.responseText != '');
                alert(resp.responseText);
                window.location = window.location;

            }
        }

    });

}

function refresh() {
    var akkToken = '<%=Session["googleAccToken"]%>';
    $.ajax({
        url: 'https://www.googleapis.com/oauth2/v1/userinfo?access_token=' + akkToken,
        data: null,
        success: function (resp) {
            user = resp;
            alert(user.name);
        },
        dataType: "jsonp"
    });

}

当我把js文件放在teg头

<head runat="server">
    <title></title>
    <script type="text/javascript" src="Scripts/jquery-1.8.2.min.js"></script>
    <script src="Scripts/GoogleOauth2.js" type="text/javascript"></script>

</head>

当我开始我的项目并调试js时,我看到<%= Session [“googleAccToken”]%> compilator将其理解为文本,但当我将js代码放在head标签之间的简单<script type="text/javascript"></script>它运行正常,我在会话中得到我的价值我想知道我可以将此代码保存在单独的文件中并且它工作正常

您的错误是您在javascript .js文件中包含<%= %> ,并且它们不会编译以提供您期望的结果 - 它们保持不变。

有两种可能的解决方案。 以太包含javascript文件之前的变量,ether完全将其移动到页面,因此<%= %>可以编译。 例如,你可以这样做:

<head runat="server">
    <script type="text/javascript" src="Scripts/jquery-1.8.2.min.js"></script>
    <script>
       var akkToken = '<%=Session["googleAccToken"]%>';
       var UrlTo = '<%=HttpContext.Current.Request.ApplicationPath %>SaveToken.ashx?accToken=';
    </script>
    <script src="Scripts/GoogleOauth2.js" type="text/javascript"></script>
</head>

并从GoogleOauth2.js文件中删除akkToken ,并将url:UrlTo + token放在另一行也有<%= %>

这是因为在后一种情况下,javascript是由.NET处理的。 当脚本是.NET页面的一部分时, <%= %>标记将被处理并替换为计算的任何值。

当脚本是外部文件时,浏览器会单独请求它(甚至在后续页面访问时由浏览器缓存),因此.NET不会处理它,导致字符串'<%=Session["googleAccToken"]%>'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM