Решил написать приложение на php с использованием ajax. Опыта пока нет.
Интересует, как правильно спроектировать такое приложение, и как оно вообще должно работать?
В качестве примера возьмем что-то типа CRM (должны быть страницы с "клиентами" и "пользователями" + авторизация).
Сначала показывается страница с формой для авторизации. После успешного входа, показываем страницу "Клиенты".
Как это должно работать? У меня для страниц "Авторизация", "Клиенты", "Пользователи" должны быть разные файлы/адреса, или же один файлик index.php, а все остальное подгружается через AJAX и API (API есть)? Можно ли заставить работать "приложение" при отключенном js, точнее, нужно ли это делать (кто отключает js)? При обновлении страницы все подгруженные данные потеряются?
Что можно почитать на эту тему? Интересует для начала именно проектирование, в php и js знания и некоторый опыт имеются.
AJAX — это Asynchronous Javascript and XML (хотя сейчас его, наверное, было бы актуальнее называть AJAJ, так как JSON на этом поприще уверенно вытеснил XML), то есть по определению не может работать без Javascript.
По поводу проектирования. Одна форма — один HTML. Доступ к ним лучше сделать через одну точку входа, но по разным адресам (ЧПУ). А дальше много JS кода, который будет общаться с API, данными из API заполнять форму, а потом из формы передавать их в API. Но учтите, что это потребует довольно сильных клиентских машин, недобуки или неттопы мог не справиться с этим. Ну и многие мобильные пользователи в пролёте.
Спасибо за ответ! Тогда лучше сделать все сначала на php+html, а потом подумать, где можно использовать ajax (чтобы не сильно грузить браузер и дать альтернативу при выключенном js)?
Артем: так у Вас уже есть API или весь проект только на стадии проектирования? Если только начали проектировать, то я бы посоветовал сделать как белый человек: следовать принципу MVC. Когда будет готово приложение на простых HTML формах, тогда уже к ним можно будет дописать а) JSON представление, которое будет отдаваться по тем же запросам, что и HTML, но с HTTP заголовком Accept: text/json б) Javascript, который будет блокировать стандартное поведение формы и самостоятельно делать запросы (с упомянутым заголовком Accept: text/json) и обрабатывать поступивший в ответ JSON.
Спасибо, но к моему вопросу это не очень подходит. Я хочу понять, как спроектировать такое приложение. Посмотрел на AngularJS..
Я не понимаю, как должна вести себя страница при обновлении, если все подгружается через AJAX, а логика в API.
Не нужно смотреть на AngularJS.
Смотреть нужно на основы JavaScript
Введение в AJAX javascript.ru/ajax/intro
На умные статьи по php и проектированию интерфейсов.
Ссылку которую я дал более чем отлично показывает работу ajax как со стороны фронтэнда так и бэкэнда.
Остальные требования про "как лучше сделать php и т.п." какраз не имеют отношения к вопросу про AJAX ;)
Алексей POS_troi: я основы знаю :) почему нигде не написано о том, как сделать сайт полностью на ajax? идиотские примеры, как отправить данные из формы, показать прогресс и т.п., понятны и ежу. есть у меня сервер с API, надо написать клиентскую часть на ajax'е, какая структура должна быть? Конкретики бы побольше..
Они не идиотские не обижайте разработчиков :)
Структура никакая, тупо одна html страница и тонна JavaScript в котором и будет организованна функциональность отправки "ежу понятных get и post запросов" в соответствии с действиями пользователя.
Кликнули кнопку, вызвали обработчик нажатия на кнопку, вызвали aiax функцию get запроса, получили от сервера данные, обновили к примеру содержимое div.
P.S. за полностью ajax сайт вас возненавидят пользователи.
Алексей POS_troi: спасибо, это уже немного конкретнее. тут такая специфика, это небольшая панель управления, думаю возненавидеть не должны. тогда сайт "не полностью" на ajax - это обычный сайт, с теми "не идиотскими примерами"? :) т.е. тупо формочки обрабатываются аяксом и тому подобные мелкие вещи? без подгрузки данных и навигации по страницам (с помощью ajax)?
Аяксом хорошо обновлять таблички, отправлять формы. Тоесть всё для чего никогда не понадобиться нажать кнопку "назад"в браузере.
Например могу привести плохой пример использования - сайты с новостями или статьями на которых по мере прокрутки вниз подгружаются новые страницы (заместь пагинации), хуже применения не найти.
я даже не знаю куда ткнуть в реализацию хорошую и понятную на пхп, на Ruby on Rails отличная реализация работы с этим делом. Может в Yii есть компонента.
Алексей POS_troi: искренне поддерживаю Вашу ненависть к «бесконечной прокрутке», особенно когда альтернативы ей нет. Просмотр старых записей может подвесить браузер на слабой машине.