Как работает генерация меню на этом сайте

173
05 июля 2017, 00:21

Есть cайт. На нём как-бы должно генерироваться фитнес меню питания. Как это реализовано - есть формы с методом отправки POST и странный javascript, который отправляет всю эту канитель на сервер, дальше я ничего не понимаю. Так же, возможно ли копирование (хотя-бы частично) той реализации, что используется на сайте?

Answer 1

К сожалению, я точно вам не напишу, как они всё обрабатывают.

Но лично я делал бы это таким образом:

  1. На сайте делаю что-то вроде опроса (как и в Вашем примере), где соберу информацию в массив или отдельный объект (к примеру: {old: 17, sex: man}).
  2. Отправляю POST или GET запросом этот массив/объект на PHP файл.
  3. В PHP анализирую все полученный данные условиями. К примеру:

    if( $_POST['sex'] === 'male' ){
       if( $_POST['old'] >= 10 ){
      return 'Информация 1';
       }else{
          return 'Информация 2';
       };
    }else{
       if( $_POST['old'] >= 10 ){
          return 'Информация 3';
       }else{
          return 'Информация 4';
       };
    };
    
  4. Принимаю полученный от PHP ответ.

  5. Если я сгенерировал HTML в PHP, то просто вставляю его, а если - нет, то генерирую HTML по полученным данным и вставляю
Answer 2

Взгляните на форму. У них там есть input типа radio. Но они его скрыли cssом (display:none). При нажатие они javascriptом переправляют на URL с POST запросом.

<form action="https://zdravkamaksurova.diet/3" method="POST" id="radioQuestionForm">
                        <label class="radioAnswer" for="answer_0">
        <input id="answer_0" value="16" name="answer" data-score="1" type="radio">
        Почти никаква
    </label>
                        <label class="radioAnswer" for="answer_1">
        <input id="answer_1" value="17" name="answer" data-score="1.146" type="radio">
        Ходя често пеша
    </label>
                        <label class="radioAnswer" for="answer_2">
        <input id="answer_2" value="18" name="answer" data-score="1.292" type="radio">
        Тренирам 1-2 седмично
    </label>
                        <label class="radioAnswer" for="answer_3">
        <input id="answer_3" value="19" name="answer" data-score="1.438" type="radio">
        Тренирам 3-5 седмично
    </label>
                        <label class="radioAnswer" for="answer_4">
        <input id="answer_4" value="20" name="answer" data-score="1.583" type="radio">
        Тренирам 5-7 пъти седмично
    </label>
                    <input name="score" id="questionScore" value="1" type="hidden">
<input value="1" name="question" type="hidden">
<input name="_token" value="fDAU5jUw4ne7tjI6HfiwFFcphQRJpbc0SLOIFEFf" type="hidden">
<input value="radio" name="type" type="hidden">
<a href="https://zdravkamaksurova.diet/1" class="testBack">Назад</a>
</form>
READ ALSO
Дочерний компонен в VueJS

Дочерний компонен в VueJS

Как использовать в родительском компоненте methods и watch дочернего?

154
Moloquent без Laravel

Moloquent без Laravel

Хочу работать с MongoDB через Moloquent без LaravelУстановил через composer require moloquent/moloquent, создал index

246
php msql запрос к 3-ем таблицам

php msql запрос к 3-ем таблицам

Оновлено: мне не нужно вытаскивать из одной таблицы по параметрам другой, мне просто нужно из трех таблиц вытаскивать данные по правилам...

170
Laravel relation One to One through One (or pivot)

Laravel relation One to One through One (or pivot)

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

337