簡體   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