0

我正在开发一个带有 MySQL、HTML5、jQuery 和 Json 的工具。在我的网站上,我有 3 张表格,但其中一张必须转置。所以我写这个:

$(document).ready(function () {
  $('#druckerdetails').dataTable({
    "bPaginate": false,
    "bLengthChange": false,
    "bFilter": false,
    "bSort": false,
    "bInfo": false,
    "bAutoWidth": false,
    "bProcessing": true,
    "bServerSide": false,
    "sAjaxSource": 'php/index_druckerdetails.php?druckername=RAGPLM002'
  });
  $(function () {
    var table = $('#druckerdetails');
    alert('Besten Dank, dass Sie isyPrint benutzen :)');
    table.find('thead tr').detach().prependTo(table.find('tbody'));
    var t = table.find('tbody').eq(0);
    var r = t.find('tr');
    var cols = r.length;
    var rows = r.eq(0).find('td,th').length;
    var cell, next, tem, i = 0;
    var tb = $('<tbody></tbody>');
    while (i < rows) {
      cell = 0;
      tem = $('<tr></tr>');
      while (cell < cols) {
        next = r.eq(cell++).find('td,th').eq(0);
        tem.append(next);
      }
      tb.append(tem);
      ++i;
    }
    table.find('tbody').remove();
    $(tb).appendTo(table);
    $(table)
      .find('tbody tr:eq(0)')
      .detach()
      .appendTo(table.find('thead'))
      .children();
    table.show();
  });
});

有了这个警报,一切都很好并且可以工作,因为 php 文件有足够的时间返回 Json-String。但是如果没有警报,JavaScript 不会等待 MySQL 查询的 php 数据。因此,网站上缺少数据。

没有警报: http ://www.computerbase.de/forum/attachment.php?attachmentid=359923&d=1377067918

所以这里是时间线(isyprint_home.js & index_druckerdetails.php): http ://www.computerbase.de/forum/attachment.php?attachmentid=359927&d=1377072271

那么我必须做的是,js-file 等到 json-string 被返回?

感谢和抱歉我的英语不好

4

3 回答 3

1

您可以使用延迟渲染:

$(document).ready(function() {
    $('#example').dataTable( {
        "bProcessing": true,
        "sAjaxSource": "sources/arrays.txt",
        "bDeferRender": true
    } );
} );

字体

如果数据表无法解决您的问题,我建议您从单独的 ajax 调用中获取 json 提要,并在完成后将其放入数据表中。像这样:

var feed;
 $.ajax({
   type: 'POST',
   url:  'www.test.com/mydatatablefeed',
   success: function(data){
      feed = data;    
   }
   });

 $('#example').dataTable( {
        "aaData": feed
    } );   
} );
于 2013-08-22T14:23:23.840 回答
0

使用实际返回数据时应调用的 ajaxComplete 或数据表回调。您还可以在加载数据失败时向事件添加回调,以便通知用户失败。

于 2013-08-22T14:20:59.010 回答
0

ajax 源用于异步加载数据,因此这种行为是意料之中的。您需要将“转置”代码链接到数据已加载的通知,或在加载数据时对其进行修改。就个人而言,我会在返回 JSON 的 PHP 中解决这个“问题”,因此它以它理解的格式提供表数据。

但是如果你想这样做,回调有一个函数可以覆盖数据获取:http ://datatables.net/usage/callbacks

fnServerData此参数允许您覆盖从服务器($.getJSON)获取数据的默认函数,以便更适合您的应用程序。例如,您可以使用 POST 数据,或从 Gears 或 AIR 数据库中提取信息。

这是一个示例,显示如何使用数据进行额外处理:http: //datatables.net/examples/server_side/custom_vars.html

于 2013-08-22T14:26:46.407 回答