AJAX请求无法在代码隐藏文件中找到WebMethod

时间:2018-09-05 14:24:59

标签: javascript c# asp.net ajax

我有一个aspx文件,在页面加载时,应该使用ajax从我的代码隐藏文件中调用web方法,该文件从MySql数据库获取数据以显示在页面上。问题是,当页面加载并且包含ajax请求的javascript函数被调用时,出现以下错误:

未知的Web方法PopulateUsersList。
参数名称:methodName

描述:在执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。

异常详细信息:System.ArgumentException:未知的Web方法PopulateUsersList。
参数名称:methodName

当我在页面中使用其他ajax请求并且它们都正常工作时,我不确定为什么会发生这种情况。这是包含ajax请求的函数的代码:

function loadUsersList(active) {
    $.ajax({
        type: 'POST',
        url: 'ManagerPopup.aspx/PopulateUsersList',
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify({ active: active }),
        beforeSend: function () {
            console.log('loading users list...');
        },
        success: function(result){
            $('#userListDiv').empty();
            $('#userListDiv').append(result.d);
            $('#userListTable').DataTable({
                "lengthChange": false,
                "pageLength": 13,
                "order": [[ 1, "asc" ]]
            });
            $('#userListTable tbody').on('click', 'tr', function () {
                var tableData = $(this).children("td").map(function () {
                    return $(this).text();
                }).get();

                var id = $.trim(tableData[0]);
                var email = $.trim(tableData[2]);
                var phone = $.trim(tableData[3]);
                var active = $.trim(tableData[4]);

                getUserSpecifics(id, email, phone, active);
            })
        },
        error: function (ex) {
            console.log('error loading user list');
            console.log(ex.responseText);
        }
    });
}

这是它试图达到的网络方法:

[WebMethod]
    public static string PopulateUsersList(bool active)
    {
        ArrayList userList = new ArrayList();
        Query query = new Query();
        StringBuilder userListHTML2 = new StringBuilder();
        string userListHTML = "" +
            "<table runat=\"server\" id=\"userListTable\" class=\"table table-striped table-bordered table-hover\">" +
                "<thead>" +
                    "<tr>" +
                        "<th>User ID</th>" +
                        "<th>Name</th>" +
                        "<th>E-Mail</th>" +
                        "<th>Phone</th>" +
                        "<th>IsActive</th>" +
                    "</tr>" +
                "</thead>" +
                "<tbody>";           
        switch (active)
        {
            case true:
                userList = query.GetUserList(true);
                break;
            case false:
                userList = query.GetUserList(false);
                break;
        }
        foreach (User user in userList)
        {
            userListHTML2.Append(string.Format(@"
            <tr>
                <td>{0}</td>
                <td>{1}</td>
                <td>{2}</td>
                <td>{3}</td>
                <td>{4}</td>
            </tr>", user.userID, user.displayName, user.email, user.phone, user.isActive));
        }
        string userListHTML3 = "" +
                "</tbody>" +
            "</table>";
        string finalHTML = userListHTML + userListHTML2 + userListHTML3;
        return finalHTML;
    }

注意:尽管从WebMethod返回的HTML指出无法找到该方法本身,但仍以某种方式使其进入了页面。

我已经尝试过从WebMethod中删除静态对象。

任何帮助将不胜感激!

0 个答案:

没有答案