1

我正在使用很棒的 datatables jquery 插件,但是我在渲染表格时遇到了一些问题。

我有以下代码:

$(document).ready(function() {
var jsonEmp="";
$.getJSON("../lib/violation_select_emp.php", function(json) {
    jsonEmp = json;
}); 

var oTable;
oTable = $('#uview').dataTable({
    "bStateSave":true,
    "bProcessing": true,
    "bServerSide": true,
    "sAjaxSource": "../lib/server_processing_emp_list.php",
    "sPaginationType": "four_button",
    "aaSorting": [[ 0, "asc" ]],
    "aoColumns": [
    {
        "fnRender": function ( oObj ) {
         var empID=oObj.aData[4];
         var empName=oObj.aData[5];
         return "<a href='viewEmployer.php?empID="+empID+"'>"+empName+"</a>";
    }
    },
    {
        "fnRender": function ( oObj ) {
            var numAlerts=jsonEmp.length;
            var i=0;
            var alerts=0;
            while(i<numAlerts){
            if(jsonEmp[i]==oObj.aData[3]){
                alerts++;
            }
            i++;
    }
    return alerts;
    }
});
});

当我加载页面时,fnrender 列中没有显示任何内容,但是当我点击下一个分页按钮,然后点击上一个分页按钮时,我看到了我想要查看的信息。

我的理论是表格需要刷新,但是当我这样做时,它会导致同样的事情发生。

不知道该怎么办,希望有人可以帮助我。

4

1 回答 1

2

您有 $.getJSON 的回调函数。在回调函数中,您为使用“”初始化的 jsonEmp 变量分配一个值。您的代码不会等待您发送请求的网站的响应,您在 $.getJSON 下面的 Javascript 代码不会等待页面响应,从而导致在分配现实生活之前使用 jsonEmp 的错误对它的价值。

建议:

$(document).ready(function() {
var jsonEmp="";
var oTable;
$.getJSON("../lib/violation_select_emp.php", function(json) {
    jsonEmp = json;
oTable = $('#uview').dataTable({
    "bStateSave":true,
    "bProcessing": true,
    "bServerSide": true,
    "sAjaxSource": "../lib/server_processing_emp_list.php",
    "sPaginationType": "four_button",
    "aaSorting": [[ 0, "asc" ]],
    "aoColumns": [
    {
        "fnRender": function ( oObj ) {
         var empID=oObj.aData[4];
         var empName=oObj.aData[5];
         return "<a href='viewEmployer.php?empID="+empID+"'>"+empName+"</a>";
    }
    },
    {
        "fnRender": function ( oObj ) {
            var numAlerts=jsonEmp.length;
            var i=0;
            var alerts=0;
            while(i<numAlerts){
            if(jsonEmp[i]==oObj.aData[3]){
                alerts++;
            }
            i++;
    }
    return alerts;
    }
});
}); 

});

如您所见,我已经将您的对象的初始化放入回调函数中,我仍然认为您的问题来自初始化,但我没有测试代码。让我知道我的建议的结果。

祝你好运!

于 2012-09-10T17:16:20.383 回答