2013-08-22 36 views
0

我使用MySQL,HTML5,jQuery和Json开发了一个工具。在我的网站上我有3张桌子,但其中一个必须换位。所以,我写这篇文章:jQuery必须等待php

$(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的字符串。但是如果没有提示,那么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文件等待直到JSON -string被返回?

感谢和我的英语不好

回答

0

使用ajaxComplete或数据表回调时实际返回的数据应该被叫做遗憾。 您还可以在加载数据失败时向事件添加回调,以便通知用户有关失败的信息。

1

您可以使用延迟渲染:

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

Font

如果数据表中不能把你的问题,我建议你从分离AJAX调用JSON的饲料,并在其完成你把它放在数据表中。像这样:

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

$('#example').dataTable({ 
     "aaData": feed 
    }); 
}); 
+0

DeferredRender不起作用 – user2707596

+0

所以,你需要做什么我把答案(编辑) – Guerra

0

ajax源用于异步加载数据,所以这种行为是预期的。您需要将“换位”代码链接到加载数据的通知,或者在加载数据时对其进行修改。就我个人而言,我会在PHP中返回JSON来解决这个“问题”,因此它会以它理解的格式给出表格数据。

但是,如果你想要去的这一点,回调有一个功能,您可以覆盖数据抓取:http://datatables.net/usage/callbacks

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

这里是展示如何做额外的处理瓦特/数据的示例:http://datatables.net/examples/server_side/custom_vars.html