Datatable (без нумерации страниц)> отсутствующие параметры в форме отправки - PullRequest
0 голосов
/ 16 января 2019

# 3 РЕДАКТИРОВАТЬ => ПРИЧИНА НАЙДЕНА!

Итак, я обнаружил, что причина проблемы Datatable . Даже если я не использую нумерацию страниц, Datatable ограничивает число строк, которые форма может POST.

jQuery('#tblStats').DataTable( {
   dom: 'ft',
   ordering: false,
   jQueryUI: true,
   scrollY: "400px",
   deferRender: true,
   scroller: true,
   scrollCollapse: true,
   language: {
       search: "<%= t('app.bouton.filter') %>",
       infoEmpty: "<%= t('app.datetables.sZeroRecords') %>"
   }
});

Есть идеи, как избежать этого ограничения и продолжать использовать Datatable?

Я уже пробовал это, но все то же самое: https://www.gyrocode.com/articles/jquery-datatables-how-to-submit-all-pages-form-data/

Спасибо!

ПЕРВОНАЧАЛЬНОЕ СООБЩЕНИЕ

Мне трудно понять, почему у меня отсутствуют некоторые параметры при отправке формы.

Внутри формы есть таблица, которая динамически заполняется. 10 параметров отправляются для каждой строки. Подтверждение отлично работает с небольшими данными , но, похоже, оно ограничено 1898 параметрами. Иногда параметры первых 5 или 6 строк отсутствуют, а иногда параметры последних строк. Это совершенно случайно. Но предел, кажется, всегда один и тот же: отправляется не более 1898 параметров.

Я не получаю никакой ошибки вообще. Параметры просто не отправляются. Это происходит как на рабочем сервере, так и на сервере разработки. Серверы разные и ОС тоже разные.

Версия Rails - 2.3.18. Версия Ruby - 1.8.7.

Кто-нибудь имеет представление о том, что происходит?

Заранее спасибо за помощь!

# 1 РЕДАКТИРОВАТЬ

Следуя совету Oshanz Я нашел файл конфигурации пассажира. В моем случае:

$>/home/alberto/.rvm/gems/ree-1.8.7-2012.02@dev/gems/passenger-4.0.37/resources/templates/standalone/config.erb

В файле есть параметр "client_max_body_size" внутри http {}. Он имеет значение по умолчанию 1048м. Даже если это кажется достаточно большим, я изменил его на 2048 м.
К сожалению, это не сработало, и результат все тот же.

# 2 РЕДАКТИРОВАТЬ

Так что у меня все еще есть проблема.

Как я прокомментировал ниже, я использую form_remote_tag с динамически заполненной таблицей внутри. Это будет отправлено с использованием XMLHttpRequest в фоновом режиме вместо обычной перезагрузки POST. Это генерирует:

<form action="/wizi_comm/stats" method="post" onsubmit="Element.hide('err');Element.show('spinner');; new Ajax.Request('/wizi_comm/stats', {asynchronous:true, evalScripts:true, onComplete:function(request){Element.hide('spinner');Element.show('mainBd');}, parameters:Form.serialize(this)}); return false;">

Я также проверил, используя form_tag, и результат тот же. Некоторые параметры просто не отправляются.

<form action="stats" method="post">

Я проверил конфигурационные файлы пассажира без удачи. Мне действительно нужны некоторые идеи:
Как вы думаете, это связано с конфигурацией где-то?
Как вы думаете, мне следует изменить способ отправки формы?

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 01 февраля 2019

РЕШЕНИЕ

Я провел несколько тестов с решениями на основе Datatable в виде row (). Data () . Мне все еще не хватало некоторых строк. Я также получал некоторые ошибки от API.

На данный момент я думаю, что другие библиотеки JS в проекте мешают работе с jQuery. Я буду изучать это, когда у меня будет время.

Что я наконец-то сделал, это удалил инициализацию Datatable из таблицы и использовал чистое решение CSS для выполнения прокрутки. Если кому-то интересно, моё решение основано на этом:

Таблица прокрутки для чистого CSS-решения

table.scroll {
    width: 716px; /* 140px * 5 column + 16px scrollbar width */
    border-spacing: 0;
    border: 2px solid black;
}

table.scroll tbody,
table.scroll thead tr { display: block; }

table.scroll tbody {
    height: 100px;
    overflow-y: auto;
    overflow-x: hidden;
}

table.scroll tbody td,
table.scroll thead th {
    width: 140px;
    border-right: 1px solid black;
}

table.scroll thead th:last-child {
    width: 156px; /* 140px + 16px scrollbar width */
}

table.scroll thead tr th { 
    height: 30px;
    line-height: 30px;
    /*text-align: left;*/
}

table.scroll tbody { border-top: 2px solid black; }

table.scroll tbody td:last-child, thead th:last-child {
    border-right: none !important;
}

Еще раз спасибо за вашу помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...