使用ajax从aspx页面获取布尔值

时间:2014-05-19 19:46:49

标签: jquery asp.net vb.net webforms

我想根据当前用户是管理员还是用户打开新窗口。用户按下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>

2 个答案:

答案 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真的有点过分了。