Jquery数据表无法使用Ajax发布数据(asp.Net)

时间:2017-02-15 10:32:35

标签: ajax datatables asp.net-ajax

我一直试图将数据发布到jquery数据表,但我无法做到。我在服务器端有一个web方法,它返回数据作为对象数组。我需要用ajax帖子获取数据。但我不能。所以我需要一些帮助。

这是我的c#web方法:

[WebMethod]
    public static object[] Questions()
    {
        table = new DataTable();
        List<object> questionList = new List<object>();
        table = RunSelectCommand("SELECT QUESTION_ID,QUESTION_TEXT,QUESTION_GROUP FROM QUESTIONS WHERE QUESTION_ACTIVE='Y'");
        for(int i=0 ; i<table.Rows.Count ; i++)
        {
            questionList.Add(new
            {
                q_id = table.Rows[i]["QUESTION_ID"].ToString(),
                q_text = table.Rows[i]["QUESTION_TEXT"].ToString(),
                q_group = table.Rows[i]["QUESTION_GROUP"].ToString()
            });
        }

        return questionList.ToArray();
    }

和jquery:

$(document).ready(function () {
        $('#questTable').DataTable({
            processing: true,
            serverSide:true,
            ajax: {
                url: 'Question.aspx/Questions',
                type:'POST'
            },
            columns: [
                { data: 'q_id' },
                { data: 'q_text' },
                { data: 'q_group' }
            ]
        });
    });

我用断点对其进行了调整,我注意到网络方法无法正常工作。以下是我得到的错误: DataTables警告:table id = questTable - 无效的JSON响应。有关此错误的详细信息,请参阅http://datatables.net/tn/1

提前致谢。

1 个答案:

答案 0 :(得分:0)

问题解决了。这是关于我的web方法返回对象数组和数据表不接受它。这就是为什么我得到无效的JSON响应。错误。所以我改变了我的js结构。我像往常一样发布数据,然后使用数据表数据属性进行发布。它有效:

function GetData()
    {
        $.ajax({
            type: 'POST',
            dataType: 'json',
            contentType: 'application/json',
            url: 'Question.aspx/Questions',
            data: '{}',
            success: function (result) {
                $('#questTable').DataTable({
                    data:result.d,
                    columns: [
                        { data: 'q_id' },
                        { data: 'q_text' },
                        { data: 'q_group' }
                    ]
                });}
     }