【问题标题】:Get boolean from aspx page using ajax使用ajax从aspx页面获取布尔值
【发布时间】:2014-05-19 19:46:48
【问题描述】:

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

【问题讨论】:

  • 确定需要 AJAX 来完成此任务吗?好像有点矫枉过正。只需使用一些&lt;% 内联标签将变量写入脚本。
  • 这些内联标签可以在html页面中使用吗?
  • 你特意说这是一个ASPX页面。这些标签在 ASPX 页面上可用。它们将在服务器端进行处理,结果将包含在发送给客户端的结果 HTML 中。请参阅Embedded Code 博客。

标签: jquery asp.net vb.net webforms


【解决方案1】:

您的成功函数不包含响应,因此您无法访问您正在查找的响应中的值。

至少您应该捕获响应:

    success: function (data) {

【讨论】:

    【解决方案2】:

    让我们不使用 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 实在是太过分了。

    【讨论】:

    • @Jrags87 查看我对您问题的评论。请尝试一下,如果这不起作用,请告诉我们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多