Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.

Ajax загрузка данных

  • 13 февраля 2017 г. , редакция: 13 февраля 2017 г.
  • Кто знает как инициировать ajax подгрузку данных?

    Например, хочу я загрузить 10 случайных товаров я вставляю конструкцию <insert name="show_block" module="shop" count="10" sort="rand">

    Как сделать, при нажатии на кнопку <button id="show_shop_random">Показать 10 случайных товаров</button> у меня в блок <div id="show_block_box">...</div> загрузились данные как из <insert name="show_block" module="shop" count="10" sort="rand">
    • 13 февраля 2017 г. , редакция: 13 февраля 2017 г.
    • Новый вид маркетинга - крутанул и купил что выпало?
      - может хоть товары текущей категории тогда выводить? (https://user.diafan.ru/forum/show1820/)
      PS: Это я так... на всякий случай (cat_id="current")
    • 14 февраля 2017 г. , редакция: 14 февраля 2017 г.
    • В магазине shop.php - дописать название своего обработчика в функцию public function action(). Например в конец дописать
      Код

      case 'block_random': // block_random должен будет передаваться в $_POST["action"], чтобы отработада данная функция
      $this->action->block_random();
      break;


      Далее в shop.action.php - зафигачить сам обработчик нечто отдаленно напоминающее:
      Код


      public function block_random()
      {
      $this->model->show_block($count, $site_ids, $cat_ids, $brand_ids, $sort, $images, $images_variation, $param, $hits_only, $action_only, $new_only, $discount_only, $tag);
      $this->model->result();
      $this->model->result["ajax"] = true;
      $this->result["data"] = $this->diafan->_tpl->get(вот тут название вьюхи, 'shop', $this->model->result);
      $this->result["result"] = 'success';
      }

      Показать весь код



      ну и JS куда-нить воткнуть
      Код

      $(document).on('click', '.класс_кнопки', function() {
      $.post(
      "/", {
      "module": "shop",
      "action": "block_random",
      "ajax": 1,
      },
      function(result) {

      Показать весь код
      result = JSON.parse(result);
      result.data = prepare(result.data);

      $(".класс_контейнера").empty();
      $(".класс_контейнера").html(result.data);
      });
      })
      • 14 февраля 2017 г.
      • Круто, спасибо, по-экспериментирую
        • 14 февраля 2017 г. , редакция: 14 февраля 2017 г.
        • Ошибку исправил.

          Пожалуйста, пользуйтесь.
          Код практически рабочий, там надо будет только правильно аргументы передать в $this->model->show_block()
          На крайняк можно result самому собрать запросами к БД ну и проследить, чтобы вьюха была корректная.
      • 03 декабря, вторник
      • Андрей, наткнулся на ваш ответ. Все понятно, по логике работы. Возник только вопрос - код, который вы привели для JS - ajax запрос и обработчик ответа на него, если я все правильно понимаю , никак не связан с встроенным в Диафан модулем обработки Ajax и будет работать незавсисимо от него, в том смысле, что ответы не будут никак конфликтовать друг с другом? И можно на одной страничке, если надо, как в моем случае, разместить несколько аналогичных кусков кода : (обработка события - Ajax_запрос - его обработчик), которые будут срабатывать по нужным событиям, и их ответы не будут "пересекаться"? То есть запросы будут работать полностью независимо и если надо , асинхронно.
        • 04 декабря, среда , редакция: 04 декабря, среда
        • Здравствуйте! Странно видеть что уже 2017й год, а я диафановским аяксом еще не пользовался :)

          Можете вообще в блок на сайте запихнуть и поставить тот с аргументом DEFER

Новости

  • 28 ноября, четверг
  • Необходимость обновления личного кабинета назревала давно. Предыдущая разметка уже давно не выдерживала того количества информации и функцональности, которая накопилась за последние пару лет. Плюс всем нужна полноценная адаптивность, ведь ЛК оставался последним проектом без адаптивности. Бета-версия кабинета работает с начала ноября, мы уже отладили большинство недочетов, и продолжим это делать в ближайшее время. Старая версия кабинета. Отзывы о новом кабинете, замечания, предложения пишите в теме на форуме

Блоги

  • 16.11.2019
  • Достаточно широкой проблемой, которая вызывает множество вопросов, обращений в тех.поддержку и тем на форуме, является обновление, а именно ошибки, с ним связанные. Корни проблем, возникающих при этом, совершенно различны, но наиболее часто причина в кастомизации. И хоть определение это слишком широкое, всё же процедура выявления проблемы вполне стандартизована и проста. Об этом и пойдёт речь в статье.