#javascript #jquery #json #datatables
#javascript #jquery #json #datatables
Вопрос:
Должно быть, я делаю что-то не так, но мой код очень простой, он почти не отличается от их примера в Интернете.
Я использую подкачку на стороне сервера, и я испытываю то, что при немедленной загрузке страницы он извлекает данные с сервера и отлично отображает таблицу. Однако подкачка или изменение количества записей на странице вызывает вызов AJAX, но фактически не обрабатывается.
Если я изменю строку 3562 из jquery.dataTables.js (v 1.8.2) проблема устраняется.
if ( false )//json.sEcho*1 < oSettings.iDraw )
Некоторый контекст для этой строки:
function _fnAjaxUpdateDraw ( oSettings, json )
{
if ( typeof json.sEcho != 'undefined' )
{
/* Protect against old returns over-writing a new one. Possible when you get
* very fast interaction, and later queires are completed much faster
*/
if ( false )//json.sEcho*1 < oSettings.iDraw )
Просто чтобы продемонстрировать, насколько проста моя настройка:
<script type="text/javascript">
$(function(){
$('#recTable').dataTable({
"bProcessing":true,
"bServerSide": true,
"sAjaxSource": "/recordings/partPageCallRecordings/",
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"aoColumns": [
{ "bSortable": false },
null,
null,
null,
{ "bSortable": false }
]
});
});
</script>
и HTML:
<table id='recTable' class='vmTable' >
<thead>
<tr class='vmHeader'>
<th><input id='selectAll' type='checkbox'></input></th>
<th class='sortHead'>Date</th>
<th class='sortHead'>File Name</th>
<th class='sortHead'>Type</th>
<th class='sortHead'>Playback</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
Ответ №1:
Похоже, вы возвращаете данные sEcho клиенту, поскольку они проходят первый блок if. Вы каким-либо образом редактируете его на стороне сервера? Вы пробовали ставить точку останова в firebug в этой строке, чтобы посмотреть, что возвращает sEcho? Я в основном говорю, является ли этот запрос старым запросом, обозначаемым значением sEcho по сравнению с обновленным целым числом iDraw.
Не видя, как выглядит ваш ответ json, я могу только догадываться. Но я предполагаю, что переменная sEcho неправильно установлена на стороне сервера.
Комментарии:
1. По моему опыту, правильный способ взаимодействия с этими данными на сервере — получить их из параметра запроса, а затем не изменять их и отправлять обратно в ответ без изменений.
2. Отлично, спасибо. Я не знаю, как я упустил из виду тот факт, что эта часть моего ответа была жестко запрограммирована.