|
|
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток. Поиск не дал положительного ответа на мой вопрос, поэтому решил написать тут (если что не бросайте сразу камнем). Задача следующая: Нужно средствами Ajax отправить запрос, который в свою очередь вернет id объектов. Важно чтобы возвращаемый порядок (то бишь порядок id: 1, 4, 8, 10, 12) сохранился. После того как Ajax отрабатывает успешно, нужно воспроизвести этот самый порядок (1, 4, 8, 10, 12) на странице HTML. Проблема возникает как раз в этом порядке. Если отправлять аякс запрос в синхронном режиме - порядок нарушается, тут понятно почему(пояснять не надо), как правило могут менятся местами последние, два три элемента (результатк бывает такой: 1, 4, 8, 12, 10). Если запрос отправлять в асинхронном режиме, порядок сохраняется - проблем нет, только браузер на момент выполнения запроса просто виснет (читал, знаю что это нормально). Подскажите, как сделать чтобы порядок сохранялся в синхронном режиме? Или же всё таки надо будет корректировать этот самый порядок уже на уровне js? Сейчас у меня это работает с опцией асинхронной отправке. Даже гифка отображающая отправку процесса застывает при отправке такого запроса. Заранее спасибо за любой совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 19:50 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
JOIN, Вы путаете понятия "асинхронный" и "синхронный". Как вариант решения задачи: вы можете на клиент возвращать не только значение, но и order_id - порядковый номер (вы же знаете заранее в каком порядке должны идти элементы). А на клиенте уже разруливать порядок по этому номеру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 20:18 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
и еще вопрос: почему вы не возвращаете все элементы одним Ajax-запросом? Оптимизация производительности какая-то вроде "вывода на отображение по доступности" или другие причины? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 20:21 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
JeStone, Несколько раз прочитал, не совсем понял ход ваших мыслей. Поправьте, если я не так понял. Вы предлагаете, зная порядок организовать сортировку на клиенте? Только после сортировке выдать в HTML? Почему идет отправка ajax запроса по каждому id, потому что я уже реализовал функционал, который позволяет дернуть из базы любой объект по id. Это я в примере простой порядок привел, чтобы не углубляться в подробности. Если дергать все объекты в одном запросе, будет куча данных, которая на мой взгляд повлияет на производительность. Спорить не буду - не пробовал затолкать в один запрос. Как то удобнее по одному запросику отправить, а результат сразу впихнуть в HTML. Всё хорошо, вот только порядок нарушается или при async: false - подвисает браузер на момент обработки запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 20:42 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
JOINJeStone, Вы предлагаете, зная порядок организовать сортировку на клиенте? Только после сортировке выдать в HTML? Можно и сразу вставлять в DOM данные по доступности, но позицию вставки относительно других элементов определять по порядку сортировки. Но ход моих мыслей вы поняли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 20:47 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
а не пробовал смотреть в стору websocet? об этих проблемах даже не знал. к прмру не один запрос можно возвращать любое количество ответов с сервера в любом порядке... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2014, 20:48 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
JOIN, откройте для себя Deferred . И его реализацию в dojo и jQuery. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 12:03 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
Вообще конечно странная задача. Ищу я например отели в Риме и один поставщик прислал мне ответ быстро, а другой чуть позже, а сортировать нужно по цене. По-любому придётся на клиенте сортировать, если не ждать на сервере пока все поставщики ответят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 12:07 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
skyANA откройте для себя Deferred . И его реализацию в dojo и jQuery. Спасибо за наводку, разберусь и попробую применить у себя. skyANAВообще конечно странная задача. Ищу я например отели в Риме и один поставщик прислал мне ответ быстро, а другой чуть позже, а сортировать нужно по цене. По-любому придётся на клиенте сортировать, если не ждать на сервере пока все поставщики ответят. Задача в подгрузке объектов порциями по 20 штук. Изначально выводится 20 объектов, при скроллинге должны подгрузиться еще 20 сохраняя сортировку. Загрузка идет сортировку сбивается, если в асинхронном режиме отправлять запросы. Я думал про сортировку на клиенте, пока оставил как запасной вариант, если ничего не выйдет, то буду сортировать. З.Ы Deferred, что то интересное, пожалуй стоит того чтобы изучить тему. Еще раз спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 14:44 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
JOIN, шаблонная у Вас задача. Вы ее не верно решаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 15:38 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
JOINотправлять аякс запрос в синхронном режиме Чудны твои дела, Господи. AJAX - Asynchronous Javascript and XML, синхронный - ajax, это шутка недели ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 16:09 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
FishHook, что именно вас насмешило? Код: javascript 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 16:18 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
ну вот городят... через websocket решается и никакого гемора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 17:36 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
FishHookJOINотправлять аякс запрос в синхронном режиме Чудны твои дела, Господи. AJAX - Asynchronous Javascript and XML, синхронный - ajax, это шутка недели https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#open() asyncAn optional boolean parameter, defaulting to true , indicating whether or not to perform the operation asynchronously. If this value is false , the send() method does not return until the response is received. If true , notification of a completed transaction is provided using event listeners. This must be true if the multipart attribute is true , or an exception will be thrown. Note : Starting with Gecko 30.0 (Firefox 30.0 / Thunderbird 30.0 / SeaMonkey 2.27), synchronous requests on the main thread have been deprecated due to the negative effects to the user experience. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 17:40 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
вадяну вот городят... через websocket решается и никакого гемора.да успокойтесь Вы уже со своими вебсокетами... человеку нужно к существующему решению банальную подгрузку по скролу прикрутить, а Вы ему на вебсокеты переписать все предлагаете, которых он не знает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 17:45 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
Я пока не понял суть проблемы. Загрузили 20, добавили в список. Поскролили, загрузили еще 20 следующих, добавили. Каждый запрос возвращает отсортированный массив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 18:47 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
Яростный МечЯ пока не понял суть проблемы. Загрузили 20, добавили в список. Поскролили, загрузили еще 20 следующих, добавили. Каждый запрос возвращает отсортированный массив. Каждый запрос возвращает только один элемент этой прокрутки, т.е я делаю 20 запросов и результат каждого запроса вставляю в прокрутку. В момент выполнения этих запросов происходит нарушение последовательности объектов в скролле. Надеюсь так понятнее звучит? Чуть выше я написал почему не делаю один запрос который бы вернул 20 объектов сразу в скролл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 18:57 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
вадяну вот городят... через websocket решается и никакого гемора. Действительно никакого гемора, кроме как самого гемора с websocket (исключительно для меня), как и написали выше, я не так тестно знаком с websocket чтобы решить задачу предложенным вами методом. Думаю если я был бы на столько прошарен, тогда бы и вопроса не возникло. Спасибо за совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 19:04 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
[quote JeStone]что именно вас насмешило?[/quote Конкретно то, что механизм придуманный для асинхронных запросов (что отображается даже в расшифровке аббревиатуры) юзают противоестественно. Ты можешь штаны через голову надевать, твоё дело. Но это неправильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 19:59 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
JOINЧуть выше я написал почему не делаю один запрос который бы вернул 20 объектов сразу в скролл.я видел эти буквосочетания, но не убедился. Весь мир понимает, что один сгруппированный запрос быстрее и экономичнее 20 единичных, но мы, видите ли, всё равно не уверены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 20:12 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
JOIN, Подумай... 1 запрос: 1. запрос к серверному скрипту 2. запрос от серверного скрипта к mysql 3. выборка и сортировака на стороне mysql с использованием индексов 4. отдача результата серверному скрипту 5. отдача данных клиенту 20 запросов: 1. запрос к серверному скрипту 2. запрос от серверного скрипта к mysql 3. выборка 4. отдача результата серверному скрипту 5. отдача данных клиенту (первых 5 пунктов повторяем 20 раз) 6. отсортировать данные на клиенте, каким-нить баблсортом. думай )) перечитай алгоритмы работы, и придёт просветление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 21:53 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
JOINЯростный МечЯ пока не понял суть проблемы. Загрузили 20, добавили в список. Поскролили, загрузили еще 20 следующих, добавили. Каждый запрос возвращает отсортированный массив. Каждый запрос возвращает только один элемент этой прокрутки, т.е я делаю 20 запросов и результат каждого запроса вставляю в прокрутку. В момент выполнения этих запросов происходит нарушение последовательности объектов в скролле. Надеюсь так понятнее звучит? Чуть выше я написал почему не делаю один запрос который бы вернул 20 объектов сразу в скролл. Лучше бі поменять саму идею и перейти на возврат всей коллекции. Но если уж нельзя иначе - привяжите порядковый номер к функции-обработчику или к запросу и меняйте содержимого готового фрагмента документа. (innerHTML or data) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2014, 23:03 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
Яростный МечJOINЧуть выше я написал почему не делаю один запрос который бы вернул 20 объектов сразу в скролл.я видел эти буквосочетания, но не убедился. Весь мир понимает, что один сгруппированный запрос быстрее и экономичнее 20 единичных, но мы, видите ли, всё равно не уверены.И я не уверен :) В распределенных системах все зависит от того, что отображается и где, и как оно хранится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 09:13 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
JOIN, а что у Вас за база? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 09:21 |
|
||
|
[Ajax] Асинхронный или синхронный запрос.
|
|||
|---|---|---|---|
|
#18+
skyANAJOIN, а что у Вас за база? :) Mysql, тип таблиц MyISAM. FishHook Конкретно то, что механизм придуманный для асинхронных запросов (что отображается даже в расшифровке аббревиатуры) юзают противоестественно. Ты можешь штаны через голову надевать, твоё дело. Но это неправильно. Не пойму ваших споров. Суть не в том можно ли отправлять запросы синхронно (хотя судя по опции async , применять можно, но не желательно, как описано в мануалах), а в том что результат 20-ти запросов выстраивает цепочку объектов в неправильном порядке. Что вы прицепились к расшифровке AJAX? Если так здорово знаете аббревиатуру, может и подскажите алгоритм решения моей задачи? Програмёр думай )) перечитай алгоритмы работы, и придёт просветление. Нет, тут ты не прав. Даже в плане целостности данных, надежнее будет отправить несколько запросов, чем наращивать колбасу на сервере потом выплёвывать в клиента. Согласен, что шагов взаимодействия клиент-сервер больше, но ИМХО 19 объектов успеют попасть в скролл, прежде чем оборвется связь с сервером, когда ни один объект не попадет в скролл в момент ожидания когда сервер возвратит 20 объектов в одном запросе. Это конечно грубый пример с обрывом связи на момент вставки 19 объекта, наверни ка таких ситуаций полно. Да и метод реализованный мной, я видел на других ресурсах, где так же отправляют по несколько запросов возвращая 20-30 позиций в скролл. Так что если и придет просветление, то точно не в эту сторону. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2014, 10:56 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=38832951&tid=1446435]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
244ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 556ms |

| 0 / 0 |
