0

我有一个需要填充 JQuery 表的 Ajax webmethod。我的代码没有产生错误,但我的表中没有看到任何数据。

这是网络方法:

网络方法调用

这是返回的 JSON 数据:

JSON 结果

目前正在将其发送到这样的基本表:

表格布局

最终结果是: 空显示

有人可以指出为什么没有显示数据的方向吗?

* 编辑 *

这是创建 JSON 数据的方法代码。这是由 WebMethod 调用的,它返回一个字符串

                 try
                {
                    rdr = cmd.ExecuteReader();
                    if (rdr.HasRows)
                    {
                        using (JsonWriter jsonwriter = new JsonTextWriter(sw))
                        {
                            jsonwriter.WriteStartArray();
                            int totalrecords = 0;
                            while (rdr.Read())
                            {
                                jsonwriter.WriteStartObject();
                                int fields = rdr.FieldCount;
                                for (int i = 0; i < fields; i++)
                                {
                                    jsonwriter.WritePropertyName(rdr.GetName(i));
                                    jsonwriter.WriteValue(rdr[i]);
                                }
                                jsonwriter.WriteEndObject();
                                totalrecords++;
                            }
                            jsonwriter.WriteEndArray();
                        }
                    }

这是hte WebMethod:

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static string ApprovalInfo(string messageId)
    {
    string json = string.Empty;

    json = GetComments(messageId);

    return json;

    }

* 编辑 * 我已经安装并运行了 DataTables 调试程序,它产生以下内容:

     "sAjaxDataProp": "[{\"UserName\":\"watherton\",\"EnteredDate\":\"2013-07-18T14:36:46.387    
      \",\"Comment\":\"some comment 2\"},{\"UserName\":\"watherton\",\"EnteredDate\":\"2013-07-
             18T16:12:41.753\",\"Comment\":\"some comment 3\"}]",
        "aoColumns": [{
        "mDataProp": "UserName"
         }, {
         "mDataProp": "EnteredDate"
         }, {
         "mDataProp": "Comment"
      }]

这对我来说看起来不对。我在 Firebug 中进行了调试,上面的数据流正在响应选项卡中返回,JSON 选项卡看起来不同。所以,我想在某个地方我需要告诉 WebMethod/AJax 调用使用 JSON 而不是响应。也许?

4

1 回答 1

0

尝试调用 fnDraw。

在http://datatables.net/api上找到的示例

$(document).ready(function() {
  var oTable = $('#example').dataTable();

  // Re-draw the table - you wouldn't want to do it here, but it's an example :-)
  oTable.fnDraw();
} );

另外,尝试使用 .done 和 .fail 而不是 success: 和 error: jQuery.ajax 处理继续响应:“success:” vs “.done”?

如果这些建议没有帮助,请尝试在 document.ready 上的代码中使用静态数据初始化表然后,在 ajax 调用中,只需执行以下操作:

exampleTable.fnClearTable();
exampleTable.fnAddData(mydata);
exampleTable.fnDraw();
于 2013-07-22T19:19:52.573 回答