Как интегрировать AJAX в веб-приложение в стиле MVC? - PullRequest
0 голосов
/ 23 февраля 2011

Я занимаюсь разработкой веб-приложения, используя очень простую (возможно, не совсем MVC-совместимую) инфраструктуру MVC, написанную мной при разработке приложения для поддержания чистоты кода.Однако в моем приложении много компонентов AJAX, и теперь я застрял, пытаясь интегрировать их в общую структуру MVC.Как они должны быть интегрированы?

У меня есть что-то вроде этого в моих файлах Javascript:

$('#pageList').load(BASE_SITE_URL + 'ajax/pageList.php');

, а pageList.php имел структуру, подобную следующей:

<?php

require '../includes/config.inc.php';
require BASE_PATH . 'includes/init.inc.php';

// a whole load of Controller logic here and then...
echo "<table>";
//display some user data
echo "</table>";

Я действительно смущен этим, любой совет приветствуется

Ответы [ 3 ]

0 голосов
/ 24 февраля 2011

Вот что я делаю в своих приложениях:

проверяем переменную $_SERVER с именем XMLHttpRequest.Если он установлен, это ajax-запрос, и тогда вы можете выполнить некоторую логику, чтобы ваш код не загружал представления (шаблоны и тому подобное) и выводил другое header() (если есть) ..

0 голосов
/ 26 июля 2012

У меня обычно есть скрипт js, связанный с каждым представлением, называемым update.js. Его роль состоит в том, чтобы определить, как пользователь взаимодействует с представлением, и создать HTTPREQUEST. Затем у меня есть файл с именем controller.js, который получает его, решает, что делать с этим запросом и просит модель для ответа. Наконец, файл update.js, принадлежащий представлению, обновляет представление новой информацией, полученной от модели.

Структура каталогов моего приложения выглядит следующим образом:

модель /

  • model.class.php
  • business.php

контроллер /

  • controller.php
  • controller.js

вид /

  • view.php
  • update.js

index.php

Я упорядочиваю файлы по их роли, а не по типу. Я думаю, что это лучший подход к паттерну MVC с AJAX. Помните, что целью этого шаблона является сохранение инкапсуляции и масштабируемости, и это лучший способ сделать это для меня.

0 голосов
/ 24 февраля 2011

Несколько указателей - ваш сайт должен работать без JavaScript. Например, если у вас есть нумерация страниц с URL-адресами страниц, такими как / list /? Page = 1 ... / list /? Page = n, тогда вы должны убедиться, что все ваши страницы доступны для клика, без необходимости использования JavaScript.

Javascript действительно должен быть расширением вашего сайта. В приведенном выше примере вы можете вернуться и использовать js, чтобы заменить функциональность всей нумерации страниц простым поведением ajax. Вероятно, вы захотите использовать jquery.load, чтобы сделать что-то вроде:

$("div.content").load("/list/?page=2 div.content > *");

Обратите внимание на селектор после загрузки. Это очень важно, потому что я на самом деле не создал никаких новых HTML-страниц, чтобы включить мой веб-сайт AJAX. Вместо этого я использую то, что уже доступно браузеру, в качестве простого URL-адреса и загружаю его с помощью ajax.

Конечно, бывают случаи, когда вам нужен контент только с AJAX, который действительно не существует в URL. В такой ситуации я рекомендую создать контроллер для всех ваших AJAX-файлов, а затем визуализировать каждый путь с представлением.

Надеюсь, это поможет.

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