1 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
使用FireBug跟蹤時(shí),發(fā)現(xiàn)在使用Ajax請(qǐng)求時(shí),點(diǎn)擊一次搜索按鈕,卻發(fā)送了兩次請(qǐng)求,一次是原條件的請(qǐng)求,一次是新的請(qǐng)求。
下面是查詢(xún)按鈕的代碼。先判斷是否是Datatable,如果是的話(huà),先Destroy掉,再重新創(chuàng)建。
function search(data) {
var $searchResult = $("#search-result .result-panel");
if (resultDataTable) {
resultDataTable.fnClearTable();
$searchResult.dataTable().fnDestroy();
$("#resultList").empty();
} else {
$searchResult.show();
}
resultDataTable = $searchResult.dataTable({
"bPaginate" : true,
"bAutoWidth" : false,
"bProcessing": true,
"bFilter": false,
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"oLanguage": { //漢化
"sLengthMenu": "每頁(yè)顯示 _MENU_ 條記錄",
"sZeroRecords": "沒(méi)有檢索到數(shù)據(jù)",
"sInfo": "當(dāng)前數(shù)據(jù)為從第 _START_ 到第 _END_ 條數(shù)據(jù);總共有 _TOTAL_ 條記錄",
"sInfoEmtpy": "沒(méi)有數(shù)據(jù)",
"sProcessing": "正在加載數(shù)據(jù)...",
"oPaginate": {
"sFirst": "首頁(yè)",
"sPrevious": "前頁(yè)",
"sNext": "后頁(yè)",
"sLast": "尾頁(yè)"
}
},
"bServerSide": true,
"sServerMethod": "POST",
"sAjaxSource": "${baseUrl}/zpzxResumeSearch.do?&method=<bean:message key='zjzxResume.button.search' />",
//"fnServerData": executeQuery,
"fnServerParams": function (aoData) {
aoData.push({"name": "conds", "value": data});
},
"aoColumns": [
{ "mData": null },
{ "mData": "name" },
{ "mData": "sex" },
{ "mData": "birthday" },
{ "mData": "mobilePhone" },
{ "mData": "diploma" },
{ "mData": "workYears" },
{ "mData": "currentAddress" },
{ "mData": "hukouAddress" },
{ "mData": "updateTime" },
{ "mData": null }
],
"aoColumnDefs": [
{
"aTargets": [ 1 ],
"mRender": function ( data, type, full ) {
return "<a target='_blank' onmouseover='showLabels(this, event);' onmouseout='hiddenLabels(this, event);' labels='"+buildResumeLabels(full)+"' href='${baseUrl}/zpzxResumeLookResult.do?resumeId="
+full.resumeId+"&zpzxTalentId="
+full.zpzxTalentId+"&method=<bean:message key='zjzxResume.button.showDetailInfo' />'>"
+ data + "</a>";
}
},
{
"aTargets": [ 0 ],
"mRender": function ( data, type, full ) {
return "<input type='checkbox' value='"+full.resumeId+"' class='chkExportResume' />";
}
},
{
"aTargets": [ 10 ],
"mRender": function ( data, type, full ) {
return buildLink(data, type, full);
}
}
]
});
跟蹤Datatable后發(fā)現(xiàn),在執(zhí)行resultDataTable.fnClearTable();
方法時(shí),實(shí)際調(diào)用了一次fnDraw方法,該方法會(huì)調(diào)用Ajax請(qǐng)求,然后在DataTable的_fnInitialise方法中會(huì)再調(diào)用一次Ajax請(qǐng)求。
查看Datatable發(fā)現(xiàn)fnClearTable方法實(shí)際上還有一個(gè)布爾值參數(shù)來(lái)控制是否執(zhí)行fnDraw方法,即只要把該語(yǔ)句修改為
resultDataTable.fnClearTable(false);
一切就OK了。
- 1 回答
- 0 關(guān)注
- 198 瀏覽
添加回答
舉報(bào)