Datatables не обрабатывает изменения страницы

#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. Отлично, спасибо. Я не знаю, как я упустил из виду тот факт, что эта часть моего ответа была жестко запрограммирована.