|
|
|
Autocomplete данные по JSON не фильтрует
|
|||
|---|---|---|---|
|
#18+
Привет всем! только учусь работать JSON. Передал на страницу в asp.net mvc проекте список из 220 стран Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. На странице сделал Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. [/SRC] и вывод Код: html 1. Данные в input попадают, но когда начинаю в водить букву "Р" или иную другую, то выпадает сразу весь список и данные не фильтруются по вводимым буквам. Подскажите где я ошибся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2013, 17:12 |
|
||
|
Autocomplete данные по JSON не фильтрует
|
|||
|---|---|---|---|
|
#18+
Данные должны фильтроваться в серверном методе Countries (параметр term - набранная в текстовом поле строка) Хотя в твоем случае можно заранее передать массив стран на страницу, и натравить автокомплит на этот массив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2013, 19:33 |
|
||
|
Autocomplete данные по JSON не фильтрует
|
|||
|---|---|---|---|
|
#18+
То есть на прямую брать поток JSON это не ест хорошо? А если записей гораздо больше около 10 тысяч, то как быть в этом случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2013, 23:02 |
|
||
|
Autocomplete данные по JSON не фильтрует
|
|||
|---|---|---|---|
|
#18+
yardieТо есть на прямую брать поток JSON это не ест хорошо? А если записей гораздо больше около 10 тысяч, то как быть в этом случае? Не знаю, что такое "поток JSON" и как это "брать напрямую", но autocomplete - это совсем неплохо. Надо только разобраться с серверной стороной. Обычно коллекцию получают прямо из базы и отдают. Варианты с перебором в цикле крайне затратны, так как в этом и состоим смысл - быстро получать с сервера выборку. Кстати, обычно при автокомплите ограничиваются выборкой в 10-15 элементов, каждая следующая введенная буква уменьшает потенциальный полный список. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2013, 23:31 |
|
||
|
Autocomplete данные по JSON не фильтрует
|
|||
|---|---|---|---|
|
#18+
IDVsbruckyardieТо есть на прямую брать поток JSON это не ест хорошо? А если записей гораздо больше около 10 тысяч, то как быть в этом случае? Не знаю, что такое "поток JSON" и как это "брать напрямую", но autocomplete - это совсем неплохо. Надо только разобраться с серверной стороной. Обычно коллекцию получают прямо из базы и отдают. Варианты с перебором в цикле крайне затратны, так как в этом и состоим смысл - быстро получать с сервера выборку. Кстати, обычно при автокомплите ограничиваются выборкой в 10-15 элементов, каждая следующая введенная буква уменьшает потенциальный полный список. Всем привет. Вот тут хотелось бы немного продолжить тему и рассмотреть такой вопрос: Был случай (точнее есть, так как делался недавно и был заткнут "что бы работало" с надеждой исправить), когда используя autocomplete, при введении 2-ой и более буквы получал не 20 значений как задумывалось, а меньше. Итак, основная суть в том, что я выставил источник - url на сервере, функция по которому отдавала до 20 самых подходящих значений (то есть 20, если есть столько, или меньше, если нету). При вводе первой буквы всё ок, 20 штук. При вводе второй - из этих 20 записей выбирались подходящие, и вместо 20 новых подходящих я получал 2-3, а то и меньше. После долгого углубления в код данного компонента определилось, что алгоритм такой: если есть кэш - взять из кэша, иначе отправить запрос и получить новый список. Результат предугадать не сложно: любой последующий ввод (то есть второй и более символ) вызывает всего лишь урезание полученного ранее списка на стороне клиента. При вводе первого символа подобного не наблюдается, так как при очистке инпута кэш автоматом сбрасывается. Вопрос: это я что-то ступил и как-то не так сделал, или этот баг наблюдался ещё у кого-то? Временное решение: )) думаю все догадались, что отключение кэширования решило эту проблему... Но вот нормально ли это? (сорри, повторюсь, что бы суть вопроса была однозначной). Заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2013, 00:04 |
|
||
|
Autocomplete данные по JSON не фильтрует
|
|||
|---|---|---|---|
|
#18+
Обычное решение - для запроса отключать кеширование. Для ajax-методов того же jQuery есть опции для включения/отключения кеширования. Как вариант - рамдомный параметр в URL'е, но это не всегда удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2013, 00:44 |
|
||
|
Autocomplete данные по JSON не фильтрует
|
|||
|---|---|---|---|
|
#18+
IDVsbruckОбычное решение - для запроса отключать кеширование. Для ajax-методов того же jQuery есть опции для включения/отключения кеширования. Как вариант - рамдомный параметр в URL'е, но это не всегда удобно. Значит правильно поступил? :) Спасибо... На душе легче стало. Значит ничего переписывать не прийдётся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2013, 01:31 |
|
||
|
Autocomplete данные по JSON не фильтрует
|
|||
|---|---|---|---|
|
#18+
yardieА если записей гораздо больше около 10 тысяч, то как быть в этом случае?вот тогда и придется переписать public JsonResult Countries(string term) так, чтобы он передавал только нужное. таки задействовать параметр term. Ну а когда имеется всего 220 пунктов, к тому же практически неизменных - лучше взять их одним запросом заранее. и для этого запроса выставить заголовки, чтобы кэшировался надолго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2013, 01:52 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=38291742&tid=1448245]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
5ms |
get forum data: |
6ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 307ms |

| 0 / 0 |
