我正在使用令人敬畏的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列中没有显示任何内容,但是当我点击下一个paginition按钮,然后点击上一个分页按钮时,我会看到我希望看到的信息。
我的理论是桌子需要刷新,但是当我这样做时,会导致同样的事情发生。
不知道该怎么做,希望有人可以帮助我。
答案 0 :(得分:2)
你有一个$ .getJSON的回调函数。在回调函数中,为jsonEmp变量赋值,该变量用“”初始化。您的代码不会等待您发送请求的网站的响应,您的Javascript代码低于$ .getJSON将不会等待页面响应,导致在您分配现实生活之前使用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;
}
});
});
});
正如您所看到的,我已将对象的初始化放入回调函数中,我仍然认为您的问题来自初始化,但我没有测试代码。让我知道我的建议的结果。
祝你好运!