javascript
  • asp.net
  • asp.net-session
  • 2012-10-29 40 views 3 likes 
    3

    我在GoogleOauth2.js簡單的代碼文件如何從單獨的JavaScript文件獲取會話變量?

    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代碼簡單<script type="text/javascript"></script>之間的頭標記它的工作很好,我得到會話我的價值,我想知道我可以在單獨的文件中保留這個代碼 ,它工作得很好

    +0

    你應該能夠......雖然你可能不應該。你有什麼嘗試 –

    +0

    如果不可能我只是想爲什麼這個工作時,我把代碼放在頭標記 – HaikMnatsakanyan

    回答

    5

    您的錯誤是您已經在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在其他行也有<%= %>

    +0

    感謝您的回答 – HaikMnatsakanyan

    1

    這是因爲在後一種情況下,JavaScript是由.NET處理。當腳本是.NET頁面的一部分時,將處理<%= %>標記並將其替換爲計算的任何值。

    當腳本是外部文件時,它被瀏覽器單獨請求(甚至在後續頁面訪問中被瀏覽器緩存),所以.NET將不會處理它,導致字符串'<%=Session["googleAccToken"]%>'

    相關問題