我正在尝试使用列标题及其正文填充表格,但是如果它无法进行ajax调用。
<table id="datatable1" cellpadding="0" cellspacing="0" border="0" class="display" width="100%">
<thead>
</thead>
<tbody>
</tbody>
</table>
我让头部和身体都空着。 但是添加一些随机标题。
<thead>
<tr>
<th>Random column title</th>
</tr>
</thead>
修复它。虽然我的意思是从JSON字符串同时添加列名和数据并将其添加到表中但它不会让我:
如果事先建立了正确的aoColumns
和mData
,我也可以从数据库加载资料没问题。
var oTable; //datatable reference
var start = 0; //first row's id to load
var qty = 100; //number of rows to load
var DESC = "false"; //load last row first and go down?
var type = "something";
var ajaxURL = GLOBAL_ROUTE + "api/application/datatable/fillTable/" + type + "/" + start + "/" + qty + "/" + DESC;
oTable = $('#datatable1').dataTable({
"sPaginationType" : "full_numbers",
"sDom" : '<"top"<"length"l><"search"f><"position">>rt<"bottom"<"info"i><"pages"p>>',
"bProcessing" : false,
"bServerSide" : false,
"sAjaxSource" : ajaxURL,
"bDeferRender" : true,
/*"aoColumns" : [ {
"mData" : "a"
}, {
"mData" : "b"
}, {
"mData" : "c"
}, {
"mData" : "d"
} ]*/
});
alert("asasd"); //this alert is not even reached if no header/body/aoColumns are set.
没有预先使用列名进行ajax调用吗?
答案 0 :(得分:0)
Nvm,我找到了方法,我将与你分享!
我所要做的就是改变我进行ajax调用的方式。而不是使用数据表&#34; sAjaxSource&#34;这样做的参数,我做了我自己的jquery $ .ajax()调用,通过json加载绝对一切。
首先我更改了js代码:
$.ajax({
"url" : ajaxURL,
"success" : function(json) {
json.bDestroy = true;
json.sPaginationType = "full_numbers";
json.sDom = '<"top"<"length"l><"search"f><"position">>rt<"bottom"<"info"i><"pages"p>>';
oTable = $('#datatable1').dataTable(json);
},
"dataType" : "json"
});
然后我不得不对数据表对象进行一些更改。 这是java代码:
import java.util.List;
public class DataTableObject {
String sPaginationType = "";
String sDom = "";
boolean bProcessing = false;
boolean bServerSide = false;
String sEcho;
int iTotalRecords;
private List<Object> aoColumns;
List<Object> aaData;
public String getsPaginationType() {
return sPaginationType;
}
public void setsPaginationType(String sPaginationType) {
this.sPaginationType = sPaginationType;
}
public String getsDom() {
return sDom;
}
public void setsDom(String sDom) {
this.sDom = sDom;
}
public boolean isbProcessing() {
return bProcessing;
}
public void setbProcessing(boolean bProcessing) {
this.bProcessing = bProcessing;
}
public boolean isbServerSide() {
return bServerSide;
}
public void setbServerSide(boolean bServerSide) {
this.bServerSide = bServerSide;
}
public int getiTotalRecords() {
return iTotalRecords;
}
public void setiTotalRecords(int iTotalRecords) {
this.iTotalRecords = iTotalRecords;
}
public String getsEcho() {
return sEcho;
}
public void setsEcho(String sEcho) {
this.sEcho = sEcho;
}
public List<Object> getAaData() {
return aaData;
}
public void setAaData(List<Object> aaData) {
this.aaData = aaData;
}
public List<Object> getAoColumns() {
return aoColumns;
}
public void setAoColumns(List<Object> aoColumns) {
this.aoColumns = aoColumns;
}
}
所以是的,显然我不得不在外面进行ajax呼叫,但不是两个,因为我认为最终可能要做。 希望这对未来的某些人有所帮助:)
K,回去工作。
答案 1 :(得分:0)
由于您在后端使用Java,而不是使用变通方法,您可能需要考虑JED网站上提供的许多示例,这些示例演示了如何在Java平台上最好地使用DataTables。查看:http://jed-datatables.net