我想根据当前用户是管理员还是用户打开新窗口。用户按下F1键后,我希望系统检查当前的asp.net用户角色。
我之前从未做过这样的事情,这就是我能想到的。我无法获得返回给ajax调用的布尔值。
AJAX电话:
$(document).keyup(function (e) {
if (e.which == 112) {
$.ajax({
type: "POST",
url: "/check/role.aspx",
data: {},
dataType: "json",
success: function () {
if (role == true) {
window.open(url, "popupWindow", "width=600,height=600,scrollbars=yes");
}
}
});
};
});
ASPX页面:
<%@ Page Language="VB" %>
<script runat="server">
Sub Page_Load(ByVal Sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim CurrentUser As MembershipUser = Membership.GetUser()
If (Roles.IsUserInRole(CurrentUser.UserName, "Admin")) Then
role = true
'return true that user is an admin and can open popup
End If
End Sub
</script>
答案 0 :(得分:0)
您的成功功能不包含响应,因此您无法访问您要查找的响应中的值
至少你应该捕获响应:
success: function (data) {
答案 1 :(得分:0)
让我们在没有AJAX的情况下做到这一点......
var isAdmin= <%= GetIsAdmin() %>;
$(document).keyup(function (e)
{
if (e.which == 112)
{
if(isAdmin)
{
window.open(url, "popupWindow", "width=600,height=600,scrollbars=yes");
}
}
});
在服务器端,
Public Function GetIsAdmin() As String
Dim CurrentUser As MembershipUser = Membership.GetUser()
If (Roles.IsUserInRole(CurrentUser.UserName, "Admin")) Then
return True;
End If
End Sub
您只需使用内联函数来获取页面加载时的值。无需进行异步调用。只有在页面加载时间和您点击F1键的时间之间管理状态发生变化时才需要这样做。但即使这样,页面的简单刷新也会更新变量,因此AJAX真的有点过分了。