Какой самый быстрый метод/реализация для обратного вызова Ajax?


У меня есть карта, которая загружает маркеры через ajax на различные/многочисленные события карты. В настоящее время я определяю пользовательский обратный вызов страницы для моего элемента hook_menu(), который печатает мой json/js.

Поскольку мой обратный вызов страницы не возвращает никакого содержимого и печатает только содержимое , Drupal не отображает полный шаблон, меню и т. Д. И, Таким образом, позволяет мне возвращать страницу с только моим JavaScript.

Хотя это действительно работает, я считаю, что Drupal все еще полностью начальная загрузка, что означает, что это добавляет много накладных расходов, которые я хотел бы снизить.

Я рассматривал Высокопроизводительный обработчик обратного вызова JavaScript, который может похвастаться "Высокопроизводительным обработчиком обратного вызова JavaScript" и который, короче говоря, выглядит так, как будто он предлагает js.php в дополнение к index.php направлять ваши запросы и настраивать/ограничивать/оптимизировать загрузку, которую Drupal выполняет по умолчанию.

К сожалению, проект js не имеет выпуска D7 и все же ( ходатайство об одном здесь ), которое ведет нас к началу...

Какой самый быстрый способ реализовать обратный вызов Ajax в Drupal?

Author: electblake, 2011-04-06

3 answers

Я определяю пользовательский обратный вызов страницы для моего элемента hook_menu(), который печатает мой json/js.

Это то, что предлагал Drupal 6. Фреймворк Drupal 7 AJAX может сделать немного больше, чем это. Да, он загружает Drupal, но он также предоставляет множество бесплатных функций. Короче говоря, вы можете использовать ajax_deliver() в качестве метода доставки страниц и отправлять команды в браузер.

... Ajax может быть включен путем добавления классов к кнопкам и ссылкам. Путем добавления класс 'use-ajax' для ссылки, ссылка будет загружена с помощью вызова Ajax. При использовании этого метода ссылка href ссылки может содержать "/nojs/" как часть пути. Когда платформа Ajax сделает запрос, она преобразует его в "/ajax/". Затем сервер может легко определить, был ли этот запрос сделан с помощью фактического запроса Ajax или в ухудшенном состоянии, и ответить соответствующим образом.

Однако, если вы хотите обойти рамки по соображениям производительности, тогда вам нечего останавливать вы вызываете php-файлы в своем модуле непосредственно из javascript. Вы не получите никакой пользы от Drupal, но у вас также будет полный контроль над страницей.

 8
Author: Jeremy French, 2012-08-22 23:32:22

Немного поздно, но особенно если вы используете этот обратный вызов ajax для опроса (например, проверьте наличие новых сообщений), есть интересная альтернатива: Drupal node.js интеграция.

Вместо опроса это позволяет вам создавать систему, подобную событию, в которой пользователи (они же JS на своей странице) поддерживают открытое соединение с вашим node.js сервер. Если что-то случится, вы можете напрямую уведомить всех пользователей через node.js .

 4
Author: Berdir, 2011-04-28 09:51:26

Поскольку вы хотите реализовать обратный вызов Ajax в Drupal, использование модуля JS выглядит хорошей ставкой. Я просто бегло взглянул на код, и это в основном то, что я бы предложил (но с гораздо большим вниманием к деталям). Сопровождающий также является одним из лучших разработчиков Drupal.

Похоже, вам придется использовать module_load_include() или, возможно, более ручной подход include 'sites/all/modules/contrib/...';, если вам нужно использовать API из других модулей.

Сама проблема, о которой вы говорите, была горячая тема в последнее время. Основной доклад Дриса из DrupalCon Chicago говорил о том, как Drupal 8 нуждается в улучшенных API для выполнения обратных вызовов и форматов вывода, отличных от HTML.

 3
Author: Adam DiCarlo, 2011-04-07 19:33:28