Вход • Регистрация

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 декабря 2019 г.
      • Андрей, наткнулся на ваш ответ. Все понятно, по логике работы. Возник только вопрос - код, который вы привели для JS - ajax запрос и обработчик ответа на него, если я все правильно понимаю , никак не связан с встроенным в Диафан модулем обработки Ajax и будет работать незавсисимо от него, в том смысле, что ответы не будут никак конфликтовать друг с другом? И можно на одной страничке, если надо, как в моем случае, разместить несколько аналогичных кусков кода : (обработка события - Ajax_запрос - его обработчик), которые будут срабатывать по нужным событиям, и их ответы не будут "пересекаться"? То есть запросы будут работать полностью независимо и если надо , асинхронно.
        • 04 декабря 2019 г. , редакция: 04 декабря 2019 г.
        • Здравствуйте! Странно видеть что уже 2017й год, а я диафановским аяксом еще не пользовался :)

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

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум