我正在使用数据表来显示通过Ajax($ POST)在Codeigniter中调用的SQL Server 2008过程返回的数据。最初我做了一个没有输入参数的非常简单的过程,它只返回一个JSON对象列表。 下面是我的问题和我的Codeigniter函数返回我的Codeigniter函数返回的JSON,AJAX函数和JSON结构:
1)对于大于4KB的块,不返回JSON,它只是转换为HTML:
2)如果我的一个程序返回让我们说5000+记录并且我想在数据表中显示它,那么我的做法是对的吗?或者我应该使用其他一些最佳实践:
Codeigniter功能:
public function executeProc()
{
$sqlsrvr = $this->load->database('test', true);
// Get the input values of the procedure
$arr = array();
parse_str($_POST['str'],$arr);
//get Procedure Name
$procName = $_POST['procName'];
$sp ='exec secondProc';
$query = $sqlsrvr->query($sp);//->result();
$jawad = $query->result_array();
$this->output->set_header('Content-type: application/json');
echo json_encode($jawad);
}
AJAX功能
$(document).on('click','#executeProc',function(e){
$('#demo').html('<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"></table>');
e.preventDefault();
var jawad = $( ".jawad" ).serialize();
$.post('<?=base_url();?>command/executeProc',
{str:jawad,procName:$('#procName').val()},
function(html){
//loading data table on return
$('#example').dataTable( {
"data": html,
"columns": [
{ "data": "AppointmentID" },
{ "data": "FirstName" },
{ "data": "LastName" },
{ "data": "AppointmentDate" }
]
} );
});
});
JSON示例:
[
{
"AppointmentID": "1",
"FirstName": "Test",
"LastName": "test",
"AppointmentDate": "2013-01-12"
},
{
"AppointmentID": "2",
"FirstName": "dfg",
"LastName": "dfg",
"AppointmentDate": "2013-01-01"
}
]
-----编辑后------ STRANGE BEAVAVIOR(JSON标签转换为HTML以获取更大的记录)
获取显示在数据表中的40条记录
对于大于40的记录,这些记录不会显示在数据表中