无法在Web方法AJAX上加载资源

时间:2017-04-16 11:59:58

标签: c# jquery asp.net ajax webmethod

我正在尝试使用AJAX并在我的代码中调用这样的Web方法。

function generate_source(year_source, month_source) {
            var gData_source = '';
            if (year_source) {
                gData_source = [];
                gData_source[0] = year_source;
                gData_source[1] = month_source;
                console.log('first part');
            }
            else {
                var d_source = new Date();
                gData_source = [];
                gData_source[0] = d_source.getFullYear();
                gData_source[1] = d_source.getMonth() + 1;
                console.log('second part');


            }
            var jsonData_source = JSON.stringify({
                gData_source: gData_source
            });


            var ctx = document.getElementById("order_source").getContext('2d');
            $.ajax({

                url: "dashboard.aspx/getordersource",
                data: jsonData_source,
                type: "POST",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                beforeSend: function () {
                    $("#loader_divsource").show();
                },
                success: function (response) {
                    $("#loader_divsource").hide();
                    var chartLabel = eval(response.d[0]); //Labels
                    var chartData = eval(response.d[1]); //Data

                    var myChart = new Chart(ctx, {
                        type: 'doughnut',
                        data: {

                            labels: chartLabel,
                            datasets: [
                                {
                                    type: 'doughnut',
                                    label: chartLabel,
                                    data: chartData,
                                    backgroundColor: [
                                         "#FF6384",
                                         "#36A2EB",
                                    ],
                                    hoverBackgroundColor: [
                                        "#FF6384",
                                        "#36A2EB",
                                    ]

                                }

                            ]
                        }
                    });

                }

            });


        }
        var d_source = new Date();
        gData_source = [];
        $('#year_source').val(d.getFullYear());
        $('#month_source').val(d.getMonth() + 1);
        generate_source('', '');

我的网络方法是这样的;

[System.Web.Services.WebMethod]
    public static List<string> getordersource(List<int> gData)
    {
        DataSet ds = ws_db.get_Dataset_order_source();
        var returnData = new List<string>();

     ......
        return returnData;

    }

每当我尝试运行此数据时,我的网络方法断点都没有被击中。此外,如果我使用相同的方法没有数据,我不会得到这个错误。这让我发疯了。

1 个答案:

答案 0 :(得分:0)

我认为你的问题出现在这段代码中:

var jsonData_source = JSON.stringify({
                gData_source: gData_source
            });

您正在尝试使用键值对序列化数组,使其无效。 改为:

var jsonData_source = JSON.stringify(gData_source);

你的网络方法应该是这样的:

[System.Web.Services.WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.JSON)]
    // just return a string, not list, your JSON string should have contain all your enumerable in your string Data
    public static string getordersource(List<int> gData)
    {
        DataSet ds = ws_db.get_Dataset_order_source();
        JsonSerializer serializer = new JsonSerializer();
        var returnData = serializer.serialize(ds);

     ......
        return returnData;

    }

希望它有所帮助。