3

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に入れると

<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"]%> コンパイラがこれをテキストとして理解していることがわかりますが、js コードを head タグに配置すると、単純<script type="text/javascript"></script>に正常に動作し、セッション i で値を取得しますこのコードを別のファイルに保存しても問題なく動作することを知りたい

4

2 に答える 2

5

あなたのエラーは<%= %>、javascript.jsファイル内に をインクルードしていて、期待する結果を得るためにコンパイルされていないことです - それらはそのままです。

それには2つの可能な解決策があります。イーサは、JavaScript ファイルの前に変数を含めます。イーサは完全にページに移動して、<%= %>コンパイルできるようにします。たとえば、次のことができます。

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

ファイルakkTokenからを削除し、GoogleOauth2.jsurl:UrlTo + token<%= %>

于 2012-10-29T14:14:45.400 に答える
1

後者の場合、javascript が .NET によって処理されたためです。スクリプトが .NET ページの一部である場合、<%= %>タグは処理され、計算された値に置き換えられます。

スクリプトが外部ファイルの場合、ブラウザーによって個別に要求されます (さらに、その後のページ アクセス時にブラウザーによってキャッシュされます)。そのため、.NET はそれを処理せず、文字列'<%=Session["googleAccToken"]%>'.

于 2012-10-29T14:12:21.633 に答える