Как загрузить и показать данные асинхронно - PullRequest
5 голосов
/ 09 февраля 2011

Я использую ASP.NET и SQL Server. Я хотел бы загрузить данные из базы данных асинхронно и показать данные, которые частично загружены немедленно.

Предположим, что в результате запроса есть тонны записей. Через 3 секунды он загружает 20%, затем мне нужно обработать и сразу показать 20% данных, не дожидаясь полного ответа. Я знаю $ .Ajax в jQuery для загрузки данных асинхронно. Можно ли обработать частичный ответ, не ждать полного ответа и показать его немедленно.

Есть ли способ получить это?

Ответы [ 7 ]

3 голосов
/ 21 сентября 2011

Предположим, что в результате запроса тонн записей

Вы должны задать себе вопрос: увидит ли конечный пользователь тонну записей сразу?


Вы не указываете, что и как вы показываете данные, поэтому я собираюсь предположить, что вы показываете данные в виде таблицы.

В наши дни при таком сценарии общения мы загружаем данные, используя страницы, и запускаем их, когда пользователь прокручивает сетку, это можно увидеть даже на мобильных устройствах и даже в Facebook, Twitter,etc ...

Будет загружена первая страница (например, мы настроили страницу на 20 записей), поэтому она будет загружать первые 20 записей ( page 0 ), нокак только вы достигнете дна, он автоматически загрузит еще 20 записей ( стр. 1 ).

Этот метод называется Бесконечный свиток

1 голос
/ 30 марта 2011

Вы можете использовать скрытый IFRAME для получения ответа, который записывается с использованием метода ASP response.flush (выводит постепенно сформированные ответы).Затем, используя интервал js, вы можете запросить тело этого iframe, чтобы получить обновленный контент ...

1 голос
/ 28 марта 2011

Как Алекс сказал, что вы не можете начать показывать частичный ответ ... Держу пари, ваше время ожидания связано со временем, которое требуется для запроса и возврата набора данных, а не со временем, которое требуется для отображения даты.При этом можно легко создать функциональность, чтобы получить только первые 20% записей, прежде чем пытаться получить последние 80%.Конечно, вы должны загружать каждый результат асинхронно.

Недостатком является то, что вам нужно сгенерировать 2 цикла запросов / ответов и 2 запроса к базе данных.

Просто интересно, сколько времени потребуется для выполнения запроса SQL за пределами вашего сайта (используяSQL Manager например)Сколько данных на самом деле возвращается 10 КБ или 1000 КБ?Если у вас много текстовых данных, посмотрите, как добавить сжатие к своим ответам.

0 голосов
/ 26 апреля 2011

Вместо того, чтобы показывать частичный ответ, почему бы вам просто не отобразить таблицу данных на стороне сервера. Если у вас много записей, просто покажите только 10 записей на странице, вернувшись в базу данных, чтобы получить следующие 10 записей, когда пользователь просматривает данные.

0 голосов
/ 22 апреля 2011

Вот решение в простом. 1. вам нужно создать отдельную страницу asp.net, которая будет принимать 1 параметр, начальный номер записи, Вы должны убедиться, что у вас есть таблица с уникальным номером записи. и извлекают, скажем, 20 строк из заданного номера начальной записи. 2. Вам нужно вызвать метод get AJAX, который является рекурсивным, увеличивая номер записи каждый раз на 20, пока вы не получите ответ как NULL.

Надеюсь, это решит.

0 голосов
/ 09 февраля 2011

Нет, это невозможно, вам нужно добавить несколько запросов для обработки частичного ответа, на стороне сервера вы должны частично данные.В опции $ .Ajax (jQuery) async означает, что синхронные запросы могут временно блокировать браузер, отключая любые действия, когда запрос активен.

0 голосов
/ 09 февраля 2011

Возможное решение:

  1. Вы создаете файл ASHX (универсальный обработчик) или тот, который вам подходит.Этот файл будет получать консультации по GET или POST.
  2. Believe 2 store process a.возвращает количество записей b.имеет полный результат
  3. Ajax для вызова sp "a".и вы получите количество записей.
  4. Ajax-запрос к sp "b", и вы сохраните часть запроса в кэше или сеансе и ответите на нужное количество записей.
  5. В идеале, результат консультации в формате json и может быть меньше, но для загрузки в javascript требуется больше времени.Вы также можете вернуть его в HTML, перевод тяжелее, но загружается намного быстрее.

(надеюсь, вы понимаете, потому что мой английский довольно плохой)

...