web-dev-qa-db-ja.com

jquery ajaxを使用してaspx.csファイルでwebmethodを呼び出す

呼び出すwebmethodを含むdefault.aspx.csがあり、jquery ajaxを含むjsファイルがあります。 Webメソッドを呼び出すことができません。

これが私の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();
    }

そして、これが私のjsファイルです:

function retrieveReportData() {
    var columnName = $("#ddlFilters").val();
    var input = $("#tags").val();

    if (columnName != "Select") {

        var Data = JSON.stringify({ columnname: columnName, inputVal: input });

        alert(Data);

        $.ajax({

            url: "Default.aspx/getDetails",
            data: Data,
            type: "POST",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function (mydata) {

                alert(mydata.d);
            }
        });

    }
    else 
        alert("Please choose search filter");
}

Webメソッドに送信する適切な値があることを確認するために、データに警告していることに気付くでしょう。しかし、私が言ったように、それは私のwebmethodの呼び出しに失敗し、私のajax内の私の成功関数に進みません。助けて!ありがとう! :)

10
Luke Villanueva

Webメソッドはstaticである必要があります。

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

これは完全なサンプルであり、asp.netページを使用したajaxリクエストを介してサーバー側の「webmethod」を呼び出す方法の最初から最後までのプロセス全体を示しています。

http://www.codeproject.com/Questions/374136/Call-Page-Method-From-Jquery-Ajax-Call

3
Zhan

typeを "Get"に設定して、パラメータをデータではなくURLで送信してみてください

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