如果您使用的是 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
我通常会做这些事情之一
- 将哈希值传递给 jQuery ajax 方法并将其存储在那里。
- 获取哈希值并在将其转换为查询字符串后重定向到同一页面
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"];
请注意,它需要多往返一次服务器,因此效率不高。但这就是我所做的。