AJAX и JQuery с MVC - PullRequest
       1

AJAX и JQuery с MVC

14 голосов
/ 23 июня 2011

Как вы организуете свои контроллеры, методы, представления при использовании модели MVC с jQuery с большим количеством битов AJAX?

Вопрос 1

У вас есть отдельный контроллер только для вызовов AJAX, или вы смешиваете методы AJAX вместе с вашими обычными не-AJAX методами в одном контроллере?

Вопрос 2

Если бы вы смешивали методы AJAX и не-AJAX в одном контроллере, есть ли у вас отдельные методы AJAX и не-AJAX, или выобъедините их вместе (если возможно) и передайте значение (NULL или AJAX), которое определяет, передается ли в браузер нормальное представление или представление AJAX.

Вопрос 3

Если у вас есть 50 различных вызовов AJAX, и для каждого вызова требуется метод, который, в свою очередь, требует представления, мы получаем контроллер с 50 методами и 50 представлениями.Это хорошая практика MVC?Я могу думать обо всех методах AJAX в контроллере, совместно использующих одно представление, где файл представления содержит условные операторы наблюдений, а в файл представления передается параметр, который определяет, какой из 50 наблюдений будет использоваться.Вроде как сжатие 50 представлений в 1.

Вопрос 4

Вместо того, чтобы иметь столько представлений (50 представлений), что вы думаете о выводе вывода вметод контроллера, а не в представлении?Таким образом, у нас не будет так много просмотров.

Кстати, я использую PHP-инфраструктуру CodeIgniter для моей модели MVC

Ответы [ 3 ]

10 голосов
/ 23 июня 2011

Вопрос 1

Я смешиваю код ajax и non-ajax на одном контроллере. Таким образом, ваш код легко найти.

Вопрос 2

Я комбинирую ajax и non-ajax метод вместе. Упрощает использование Прогрессивного улучшения javascript , так что люди без javascript будут по-прежнему отправлять сообщения на тот же контроллер

Вопрос 3

Вы не должны иметь 1 контроллер с 50 методами. У вас должен быть контроллер для каждой функциональности. Итак, пользовательский контроллер, контроллер Foo, контроллер Bar - так что вы можете получить 10 контроллеров по 5 методов в каждом. Таким образом, методы принадлежат классам, специфичным для их функций. У меня есть отдельные взгляды, а не один большой взгляд. Вы не должны использовать ЛОГИКУ внутри представлений, чтобы определить, что отображается, это работа контроллера. Но некоторые контроллеры / методы могут возвращать то же представление, что и другие методы

Вопрос 4

Или контроллер НИКОГДА не должен выводить HTML. Для этого используйте представления, которые являются основной целью MVC для отделения проблем кода (контроллеров) от представлений (рендеринга). Иногда мои представления просто возвращают JSON или XML, а затем я использую шаблоны Javascript для обновления DOM. В других случаях мои взгляды возвращают HTML. Например, функция Сохранить в форме. Может просто вернуть логическое значение, если оно будет успешным. Тогда мой Javascript будет скрывать или показывать DIV в зависимости от ответа.

3 голосов
/ 23 июня 2011

Когда вы делаете вызов jQuery AJAX, jQuery добавляет HTTP-заголовок X-Requested-With, который вы можете использовать, чтобы определить, является ли данный запрос запросом AJAX или нет. Имея это в виду, очень часто имеет смысл разделять одно и то же действие контроллера между AJAX и традиционными запросами, создавая модель и затем отображая представление с этой моделью для традиционных запросов или отвечая с помощью JSON-сериализованного представления той же модели для AJAX. запросы.

3 голосов
/ 23 июня 2011

Вопрос 1 - Отдельный контроллер для AJAX. Если вы используете сервлеты, то вы должны использовать новую поддержку сервлетов 3.0 для поддержки асинхронности.

http://www.javaworld.com/javaworld/jw-02-2009/jw-02-servlet3.html?page=2

Вопрос 2 - Поскольку мы используем отдельный контроллер, это не применимо.

Вопрос 3 - Видите ли вы сценарий, в котором у вас есть 50 уникальных вызовов без пересекающихся функций? Хотя у вас есть 50 AJAX-вызовов, на стороне сервера может быть много повторного использования для обслуживания этих запросов. Таким образом, 50 вызовов не равно 50 методам. Вы можете обернуть каждый запрос командой & выполнить соответственно вместо if else, который может выйти из-под контроля.

Вопрос 4 - 50 звонков могут не совпадать с 50 просмотрами. Вы должны использовать здесь снова. Вы должны отделить компоненты вашего вида и собрать их. Сводится к дизайну.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...