AJAX调用C#Web方法以返回列表

AJAX call to C# Web Method to return a List

本文关键字:返回 列表 方法 调用 C#Web AJAX      更新时间:2023-09-26

你好,我正在尝试调用一个c#web方法,该方法接受3个字符串参数并返回一个列表以JSON格式使用。由于某种原因,我无法调用该方法,希望有人能伸出援手。

以下是我在ContentPage.aspx中的WebMethod-statsDataSet中的Date和Stat分别是字符串。

var myPlayer = new Player();
        var statsDataSet = new List<TodaysTotal>();
        var beginningMonth = (Month)System.Enum.Parse(typeof(Month), startMonth);
        var endingMonth = (Month)System.Enum.Parse(typeof(Month), endMonth);
        var statsRequested = myPlayer.statsBase.GetDateAdjustedData(beginningMonth, endingMonth);
        if (stat.Equals("AVG"))
        {
            statsDataSet.AddRange(statsRequested.Select(day => new TodaysTotal
            {
                Date = day.Date, 
                Stat = day.BA.ToString()
            }));                
        }
        else if (stat.Equals("SLG"))
        {
            statsDataSet.AddRange(statsRequested.Select(day => new TodaysTotal
            {
                Date = day.Date,
                Stat = day.SLG.ToString()
            }));                
        }
        else
        {
            var statCategory = (Stat)System.Enum.Parse(typeof(Stat), stat);
            statsDataSet.AddRange(statsRequested.Select(day => new TodaysTotal
            {
                Date = day.Date,
                Stat = day.GetTodaysTotal(statCategory)
            }));                               
        }
        return statsDataSet;

这是我的ajax调用:

$.ajax({
            type: "POST",                
            url: "ContentPage.aspx/ProcessDetailedStatRequest",
            data: JSON.stringify({
                stat: statCategory //statCategory is a JS string variable, 
                startMonth: startMonth //startMonth is a JS string variable, 
                endMonth: endMonth //endMonth is a JS string variable
            }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (Result) {                                        
                Result = Result.d;
                var data = [];
                for (var i in Result) {
                    var serie = new Array(Result[i].Date, Result[i].Stat);
                    data.push(serie);
                }                                        
            },
            error: function (Result) {
                alert("Error");
            }
        });

感谢您的帮助。

好的,所以我开始工作了。C#需要是静态的,而我传递的数据实际上需要封装在JSON.stringify.中

data中删除JSON.stringify,它需要object而不是string

$.ajax({
            type: "POST",                
            url: "ContentPage.aspx/ProcessDetailedStatRequest",
            data: {
                stat: statCategory //statCategory is a JS string variable, 
                startMonth: startMonth //startMonth is a JS string variable, 
                endMonth: endMonth //endMonth is a JS string variable
            },
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (Result) {                                        
                Result = Result.d;
                var data = [];
                for (var i in Result) {
                    var serie = new Array(Result[i].Date, Result[i].Stat);
                    data.push(serie);
                }                                        
            },
            error: function (Result) {
                alert("Error");
            }
        });

这可能是500 Internal Server Error的原因,希望web服务中的其他一切都很好。