从webmethod通过Jquery AJAX获取数据后,不会检查ASP.NET复选框

时间:2018-03-21 22:24:51

标签: javascript c# jquery asp.net ajax

我正在使用Jquery ajax来调用webmethod,这个webmethod访问我的数据库并返回true或false值。我希望根据返回的布尔值来检查复选框。

以下是服务器端代码。

[WebMethod]
public static bool FillData(string emailAddr)
{
    ConnectionUtility ConnectionObj = new ConnectionUtility();
    //Fill modal with correct data from database
    SqlConnection ConState = ConnectionObj.GetConnectionState();
    SqlCommand cmd = new SqlCommand("Select * from tblEmployee where Email='" + emailAddr + "'", ConState);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    da.Fill(dt);

    string subscriptionUser = dt.Rows[0]["IsSubscriptionUser"].ToString();
    return Convert.ToBoolean(subscriptionUser);
}

客户机侧:

function editdata(id, firstname, lastname, email, phonenumber, company, role, empid) {

    document.getElementById("LblHeadderText").innerHTML = "Update";


    <%--  $('#<%=TxtEmail.ClientID%>').attr('readonly', true);--%> //Commented on 12 Dec 2016 to allow user to update username/email 

    jQuery("#<%=TxtId.ClientID%>").val(id);
    jQuery("#<%=TxtFirstName.ClientID%>").val(firstname);
    jQuery("#<%=TxtLastName.ClientID%>").val(lastname);
    jQuery("#<%=TxtEmail.ClientID%>").val(email);

    jQuery("#<%=TxtPhoneNumber.ClientID%>").val(phonenumber);
    jQuery("#<%=DdlAssignRole.ClientID%>").val(role);
    jQuery("#<%=TxtOldAssignedRole.ClientID%>").val(role);

    jQuery("#<%=DpdEmployee.ClientID%>").val(empid);

    jQuery("#<%=btnSubmit.ClientID%>").hide();
    jQuery("#<%=btnUpdate.ClientID%>").show();

    $('[Id*=HfOldEmail]').val(email);

    document.getElementById('<%=btnUpdate.ClientID%>').disabled = false;

    $.ajax({
        type: "GET",
        url: "UserList.aspx/FillData",
        data: JSON.stringify({ emailAddr: email }),
        success: checkCheckBox,
        error: function (r) {
            alert(r.responseText);
        },
        failure: function (r) {
            alert(r.responseText);
        }
    });
}

function checkCheckBox(checked)
{
    $("#<%=chkbxSubscriptionUser%>").prop("checked", checked);
}

我调试了服务器端代码,它确实按预期工作。它正确返回true或false。我已经尝试了我能想到的每一种选择,我甚至尝试过使用会话变量。

我确信这是一个简单的解决方案,但我对Jquery缺乏经验,而我只是在最初签约的应用程序中实现了一项功能。

非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

Application_Start下面的评论

//RouteConfig.RegisterRoutes(RouteTable.Routes);

确保EnablePageMethods

中的ScriptManager
<asp:ScriptManager runat="server" EnablePageMethods="true">

更新checkCheckBox功能如下

function checkCheckBox(checked)
{
    //$("#<%=chkbxSubscriptionUser%>").prop("checked", checked);
    $("#<%=chkbxSubscriptionUser.ClientID%>").prop('checked', checked);
}

更新AJAX通话

$.ajax({
    type: "POST",
    url: "UserList.aspx/FillData",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify({ emailAddr: email }),
    dataType: "json",
    success: function (r) {
        checkCheckBox(r.d);
    }
    , error: function (r) {
        alert(r.responseText);
    },
    failure: function (r) {
        alert(r.responseText);
    }
});