ASP.NET WebMethod将整个页面返回给JQuery ajax请求

时间:2015-03-30 12:29:38

标签: javascript c# jquery asp.net ajax

我正在构建一个Web应用程序,我在点击文本框时从jQuery调用ASP.NET WebMethod。问题是它返回了整个ASPX页面。如何只获取Web方法返回的值?这是我的代码:

$("#<%= groupNameTxt.ClientID %>").click(function () {
    $.ajax({
        url: "../UserGroups.aspx/GetGroupList",
        data: "{  }",
        // dataType: "json"
        type: "POST",
        // contentType: "application/json",
        success: function (data) { 
            alert(data);
        },
        error: function (data) { 
            alert('err');
        }
    });
});

这是来自CodeBehind的WebMethod

[System.Web.Services.WebMethod]
public static List<Groups> GetGroupList(string mail)
{
    List<Groups> empList = new List<Groups>();
    empList.Add(new Groups() { GroupID = 1, GroupName = "Admins" });
    empList.Add(new Groups() { GroupID = 2, GroupName = "Employees" });
    empList.Add(new Groups() { GroupID = 3, GroupName = "Engineers" });
    empList.Add(new Groups() { GroupID = 4, GroupName = "Managers" });
    empList.Add(new Groups() { GroupID = 5, GroupName = "Assistants" });
    return empList;
}

2 个答案:

答案 0 :(得分:0)

页面正在返回,因为它没有访问Web方法。以下代码将正确访问Web方法。传递数据如下所示。

$.ajax({
            url: "UserGroups.aspx/GetGroupList",
            data: '{ mail: "a@a.com"}',
            dataType: "json",
            type: "POST",
            contentType: "application/json",
            success: function (data) {
                alert(data);
            },
            error: function (data) {
                alert('err');

            }
        });

答案 1 :(得分:0)

您需要将电子邮件作为参数传递,因为webmethod需要参数。

$.ajax({
    url: "../UserGroups.aspx/GetGroupList",
    data: JSON.stringify({ email: "someemail@test.com"}),
    dataType: "json"
    type: "POST",
    contentType: "application/json",
    success: function (data) { 
        alert(data);
    },
    error: function (data) { 
        alert('err');
    }
});

同时指定contentTypedataType