Работа с большим количеством флажков HTML - PullRequest
1 голос
/ 29 февраля 2012

Я имею дело с динамической формой, которая потенциально может предоставить пользователю неопределенное количество флажков в массиве (категория []).

Это вызывает несколько проблем.

Выпуск № 1 : превышение максимального количества переменных POST, которое разрешено браузером и / или сервером.Эту проблему можно решить с помощью небольшого количества сценария и фактической отправки массива в одно значение, разделенное запятыми.

Проблема # 2 : браузеры работают очень медленно и / или аварийно завершают работу.У одного пользователя есть более 5000 флажков, представляющих категории, из-за чего Chrome вызывает ошибки, Firefox работает очень медленно, и я не осмелюсь попробовать это в IE!

Мне бы хотелось получить несколько советов или идей о том, как решить вторую.проблема!

С уважением,

Джоэл

Ответы [ 3 ]

3 голосов
/ 20 марта 2012

Я обнаружил, что причина задержки / медлительности была из-за цикла jquery, который выполнял функцию each () для всех входных данных, чтобы определить, были ли изменены какие-либо поля. Очевидно, что jQuery не любит проходить через такое количество элементов.

Я остановил цикл от попадания в список флажков, и он больше не работает медленно.

Было бы неплохо иметь возможность получить массив значений из списка флажков за одно нажатие, а не циклически просматривать их все!

1 голос
/ 29 февраля 2012

ОБНОВЛЕННЫЙ ОТВЕТ

Вы также можете попробовать создать список вместо списка флажков.Вот код и снова у него нет проблем с производительностью.

<code><?php
    if( isset($_POST['chk']) ):
        echo '<pre>';
        var_dump( $_POST['chk'] );
        echo '
';умереть();ENDIF;?> '.$ я'';ENDFOR;?>

ОРИГИНАЛЬНЫЙ ОТВЕТ

Я попытался создать страницу, чтобы понять поведение браузера, и она прекрасно работает без каких-либо проблем с производительностью для 10 000 флажков.

Успешно протестировано на Firefox 10 и Chrome 17.

Это код:

<code><?php
    if( isset($_POST['chk']) ):
        echo '<pre>';
        print_r( $_POST['chk'] ); //simply print the array
        echo '
';умереть();ENDIF;?> Флажок ».$ я'«;ENDFOR;?>
1 голос
/ 29 февраля 2012

Я не думаю, что это хорошая стратегия - отображать 5000 флажков одновременно, поскольку вы говорите, что существует огромная проблема с производительностью, а не говорить о юзабилити (кто будет взаимодействовать с такой страницей?).

IMHO, вы можете загружать / выгружать чекбоксы, используя ajax (и сохранять выбранные опции во временном объекте js), или обрабатывать логическую часть сервера с помощью обратных передач ...

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