【问题标题】:Empty JQuery DataTable, c# WebMethod空 JQuery 数据表,c# WebMethod
【发布时间】:2013-07-22 16:39:17
【问题描述】:

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

这里是 WebMethod:

这里是返回的 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 而不是响应。也许?

【问题讨论】:

  • 在我离开之前节省时间。有什么区别吗?
  • 如果您将一些 JSON 数据硬编码到 dataTable() 调用中,它是否有效,例如:{"UserName":"watherton", "EnteredDate":"2013-07-18", "Comment":"comment 1"}?如果不是,那么您向dataTable 提供数据的方式存在问题;否则,您的 ASP.NET AJAX 页面方法如何返回 JSON 数据是一个问题。
  • 所以,我使用返回的数据创建了一个 Fiddle,并且它可以工作。但是网页里还是没有欢乐jsfiddle.net/s8JmF/149
  • JSON 数据标签是什么样的?另外,你能发布你的ApprovalInfo页面方法代码吗?
  • 我明天就去卡尔。

标签: c# jquery webmethod


【解决方案1】:

尝试调用 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 handling continue responses: "success:" vs ".done"?

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

exampleTable.fnClearTable();
exampleTable.fnAddData(mydata);
exampleTable.fnDraw();

【讨论】:

  • 嗨 Nullius,fnDraw 也不起作用。将尝试对返回的字符串进行硬编码,看看效果如何。
  • @CSharpNewBee 硬编码数据对您来说是怎样的?还有问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-18
  • 2012-02-04
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
相关资源
最近更新 更多