C# 使用jquery ajax调用aspx.cs文件中的webmethod

C# 使用jquery ajax调用aspx.cs文件中的webmethod,c#,jquery,asp.net,ajax,webmethod,C#,Jquery,Asp.net,Ajax,Webmethod,我有一个default.aspx.cs,其中包含要调用的webmethod,还有一个包含jquery ajax的js文件。我无法调用webmethod 以下是我的default.aspx.cs: protected void Page_Load(object sender, EventArgs e) { string[] MyArray = new string[1]; MyArray[0] = "My Value"; Grid1

我有一个default.aspx.cs,其中包含要调用的webmethod,还有一个包含jquery ajax的js文件。我无法调用webmethod

以下是我的default.aspx.cs:

    protected void Page_Load(object sender, EventArgs e)
    {
        string[] MyArray = new string[1];
        MyArray[0] = "My Value";

        Grid1D.DataSource = MyArray;
        Grid1D.DataBind();
    }

    [WebMethod]
    public Details[] getDetails(string columnname, string inputVal)
    {
        List<Details> list = new List<Details>();

        DbAccess dbacc = new DbAccess();

        DataTable dt = dbacc.getReportDetails(columnname, inputVal);

        foreach (DataRow row in dt.Rows)
        {
            Details _Details = new Details();
            _Details.memid = row["memid"].ToString();
            _Details.usrname = row["usrname"].ToString();
            _Details.fullname = row["fullname"].ToString();
            _Details.fname = row["fname"].ToString();
            _Details.mname = row["mname"].ToString();
            _Details.lname = row["lname"].ToString();
            _Details.bdate = row["bdate"].ToString();
            _Details.address = row["address"].ToString();
            _Details.sponsorid = row["sponsor_id"].ToString();
            _Details.parentid = row["parent_id"].ToString();
            _Details.placement = row["placement"].ToString();
            _Details.datejoined = row["date_joined"].ToString();


            list.Add(_Details);
        }

        Grid1D.DataSource = list.ToArray();
        Grid1D.DataBind();

        return list.ToArray();
    }

您可能会注意到,我正在提醒我的数据,以确保我有正确的值发送到我的webmethod。但正如我所说,它无法调用我的webmethod,也无法在ajax中实现成功函数。救命啊!谢谢!:)

尝试将
类型设置为“Get”,并在URL中发送参数而不是数据

url: "Default.aspx/getDetails/?colunmname="+colname+"&inputVal="+inputValue,
type: "GET"

您的webmethod必须是
静态的

[WebMethod]
public static Details[] getDetails(string columnname, string inputVal)

这是一个完整的示例,展示了如何使用asp.net页面通过ajax请求调用服务器端“webmethod”的整个过程


对不起,我不明白你刚才说的话。我的意思是你应该在URL中传递参数,并将类型设置为GET。请检查我更新的answeerI,我终于可以调用我的webmethod了。为什么它不停在我设置断点的那一行?这是否意味着它没有进入webmethod?您还可以使用数据:“?colunmname=“+colname+”&inputVal=“+inputValueOops”。我再次检查了一遍,仍然发现了一个内部服务器错误。当我在webmethod上放置static时,出现了一个错误。错误2非静态字段、方法或属性“SearchMember_Updated.Default.Grid1D”+1需要对象引用@ljpv14,所以不要引用它。。。在您的案例中,更新web方法中的某些UI是没有意义的,因为没有相应的HTML页面。您无法在webmethod上绑定服务器控件。使用它从服务器加载/保存数据。恐怕你需要改变一下logic@AlexeiLevenkov我相信我说过我的webmethod在默认值内。aspx.cso如果意味着我需要在另一个方法中传递它,以便将它与我的gridview绑定?如何将列表传递给另一个方法@克劳迪奥·雷迪。谢谢
[WebMethod]
public static Details[] getDetails(string columnname, string inputVal)