2

我有一个这样的链接。它来自instagram api。

http://localhost:60785/access_token.aspx/#access_token=43667613.4a1ee8c.791949d8f78b472d8136fcdaa706875b

如何从代码隐藏中获取此链接?我可以用 js 来获取它,但在分配给标签后我无法获取它。我是说:

<script>
    function getURL(){
        document.getElementById('lblAccessToken').innerText = location.href;
    }
</script>

这个js函数在body onload事件中。如何从代码隐藏中获取此 innerText 值?

4

1 回答 1

1

如果您使用的是 ASP.NET 4.0 和 jQuery,它相当容易。否则,您可能必须处理损坏的 id 并且必须自己处理 DOMReady。尝试这个

标记

<asp:Label ID="lblAccessToken" runat="server" ClientIDMode="Static"></asp:Label>

JavaScript

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
    $(document).ready(function(){
        var myToken = GetHashParameterByName("access_token");
        $("#lblAccessToken").html( myToken );
    });

    function GetHashParameterByName(name) {    
        var match = RegExp('[#&]' + name + '=([^&]*)')
                .exec(window.location.hash);
        return match && decodeURIComponent(match[1].replace(/\+/g, ' '));    
    }
</script>

你想要右边的值Page_Load吗?我自己还没有想出一种方法来获取哈希值。Page_Load我通常会做这些事情之一

  1. 将哈希值传递给 jQuery ajax 方法并将其存储在那里。
  2. 获取哈希值并在将其转换为查询字符串后重定向到同一页面

JavaScript

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
    $(document).ready(function(){
        var myToken = GetHashParameterByName("access_token") || "";
        if(my_token !=== ""){
            window.location = window.location.split("/#")[0] + "?access_token=" + myToken;
        }
    });

    function GetHashParameterByName(name) {    
        var match = RegExp('[#&]' + name + '=([^&]*)')
                .exec(window.location.hash);
        return match && decodeURIComponent(match[1].replace(/\+/g, ' '));    
    }
</script>

现在在 Page_Load,抓住它

string token = Request.QueryString["access_token"];

请注意,它需要多往返一次服务器,因此效率不高。但这就是我所做的。

于 2012-04-23T00:44:04.450 回答