Вход • Регистрация

Одновременная асинхронная работа нескольких Ajax запросов в Диафан

  • 03 декабря 2019 г.
  • Можно ли как то сделать независимую и одновременную работу нескольких Ajax запросов на одной странице?
    То есть когда, отправлен, но еще не пришел ответ на один запрос, и в этот промежуток времени отправляется второй запрос, с другими данными, то работа первого запроса не нарушалась, и Ajax ответы пришли бы неискаженными на оба запроса и попали в обработчики, которые им отведены ы js. Интересует - 1) Можно ли это в принципе сделать в Диафане без изменения site.js и 2) Если только с изменением site.js то подскажите основные направления изменений - сам принцип, в каком направлении необходимо менять
    • 05 декабря 2019 г. , редакция: 05 декабря 2019 г.
    • Цитата
      Можно ли как то сделать независимую и одновременную работу нескольких Ajax запросов на одной странице?

      Ответ: нет, нельзя. Читайте документацию.

      Цитата
      Можно ли это в принципе сделать в Диафане без изменения site.js

      Можно. В DIAFAN.CMS можно всё. Пример реализации - отложенная загрузка шаблонных тегов. Атрибут шаблонного тега - defer.

      Цитата
      — defer – маркер отложенной загрузки шаблонного тега: event – загрузка контента только по желанию пользователя при нажатии кнопки "Загрузить", emergence – загрузка контента только при появлении в окне браузера клиента, async – асинхронная (одновременная) загрузка контента совместно с контентом шаблонных тегов с тем же маркером, sync – синхронная (последовательная) загрузка контента совместно с контентом шаблонных тегов с тем же маркером, по умолчанию отложенная загрузка не используется, обычный вывод шаблонных тегов в коде страницы;

      Подробнее в документации к DIAFAN.CMS: https://www.diafan.ru/dokument/full-manual/templates-functions/

      То есть используйте такой js-объект, как diafan_ajax. С его помощью, можно инициировать массу AJAX-запросов, не задумываясь, пришел ли ответ. Подробнее в документации:
      https://www.diafan.ru/dokument/full-manual/developers/architecture/module/js/
      https://www.diafan.ru/dokument/full-manual/developers/architecture/module/action/

      Пример.
      Код
      diafan_ajax.init($("#eny_form"));

      Соответственно в данном случае форма с идентификатором eny_form
      Код
      <form id="eny_form"></form>
  • 06 декабря 2019 г.
  • Спасибо за подробный ответ. Посмотрел, как все это реализвано в site.js, в версиях где сделана поддержка defer - мозг вскипел.
    Но выхода нет - Придется разбираться
    • 06 декабря 2019 г.
    • Зачем разбирать site.js?
      Вам сказали про объект diafan_ajax, используйте его.
  • 06 декабря 2019 г.
  • А чтобы можно было дать конкретный совет, опишите задачу. Что за модуль, что за данные, кто отправляет, по какому событию и зачем в два параллельных процесса

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум