Загрузка Ajax для сложных проектов

Моя проблема на самом деле не в самой загрузке ajax, а скорее в возможности загрузить его без javascript. Я имею в виду, что я легко справляюсь, когда кодирую весь свой проект только на основе доступности ajax ИЛИ только без использования ajax.

// РЕДАКТИРОВАТЬ: Хотя у Аренд уже был более или менее верный ответ, в то же время «прямого ответа на этот вопрос нет». Тем не менее, я бы хотел увидеть другие подходы разработчиков к таким сценариям, как мой! Даже несколько ссылок могут помочь!

В основном я просто расстраиваюсь, кодируя все дважды на одной странице, чтобы убедиться, что оба пользователя без и с включенным Javascript имеют одинаковый опыт. Это раздражает, и мне всегда было интересно, как другие решают эту проблему.

Когда я обновляю, например, два блока div с зависимостью от одних и тех же переменных, возникает беспорядок. Вот пример:

non-js-version

require 'classobject.class.php';
$another_var = 'something';
$class = new classobject($_POST['variable']); // just an example to show that this is dynamic - I'm aware of injection!
$function = $class->returnsth(); // returns 1

if(isset($_POST)) {
    echo '<div id="one">Module 1 says:'; $require 'module_one.php'; echo '</div>';
    echo '<br /><br />';
    echo '<div id="two">Module 2 says:'; $require 'module_two.php'; echo '</div>';
}

Теперь в module_two.php и module_two.php у меня есть код, который выполняется по-разному в зависимости от возвращаемой переменной $ function . Например:

if($function >= 1 && another_var != 'something') {
   // do stuff
}
else { 
   // do other stuff 
}

Теперь, когда это легко работает с перезагрузкой, когда я хочу загрузить два модуля на keyUp / enter / submit или что-то еще, у меня в основном несколько проблем:

  • Я должен отправить переменные $ _ POST вручную в модули, чтобы использовать их
  • Мне нужно повторно выполнить класс и его методы и сделать ссылку (require_once) на них в каждом из файлов модулей.
  • Поскольку $ another_var не существует в модулях, мне пришлось бы отправить эту переменную также в каждый модуль (например, с сообщением), а затем, прежде чем ее можно было бы использовать, мне пришлось бы «изменить» ее, как $ another_var = $ _POST ['another_var'];

Меня это слегка раздражает, и мне интересно, как вы, ребята, это делаете. Я надеюсь, что мой способ кодирования не слишком глуп, но я не могу придумать другого способа. Вероятно, это сложно соотнести с моим очень простым примером, но привести весь проект с кодом было бы слишком сложно. Подводя итог, я ищу лучший способ кодирования и устранения этого беспорядка - должен быть способ! Я думал о сеансах, но для совместимости я тоже не хочу на них полагаться (если кто-то не разрешает файлы cookie).

В случае, если вы не можете понять, что я пытаюсь достичь с помощью этого способа сборки моего кода, я объясню сценарий, с которым я сталкиваюсь довольно часто ( не важно, если вы уже понимаете мои страдания ):

  1. В основном у меня есть страница index.php , где все выполняется, с телом html, стилем css и так далее. Эта страница ожидает некоторые переменные, которые устанавливаются со страницы, для которой требуется индекс (например, $ another_var в моем примере).
  2. Теперь можно устанавливать и другие переменные (например, из формы). В зависимости от этого разные классы и методы загружают новые переменные (массивы), которые используются в циклах while в моих модулях для вывода всего.

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

6
задан Anonymous 2 December 2011 в 17:06
поделиться