Я использую таблицу данных для отображения данных, возвращаемых процедурой SQL Server 2008, вызываемой в Codeigniter через Ajax ($ POST). Первоначально я сделал очень простую процедуру без входных параметров, она только возвращает список объектов JSON.
Ниже приведены мои вопросы и моя функция Codeigniter, возвращающая JSON, функцию AJAX и структуру JSON, возвращенную моей функцией Codeigniter:
1) JSON не возвращается для фрагмента размером более 4 КБ, он просто конвертируется в 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"}
]
——ПОСЛЕ РЕДАКТИРОВАНИЯ ——
СТРАННОЕ ПОВЕДЕНИЕ (вкладка JSON конвертируется в HTML для больших записей)
ДЛЯ 40 записей, которые отображаются в таблице данных
Для записей больше 40, которые не отображаются в таблице данных
Задача ещё не решена.
Других решений пока нет …