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

Использование diafan_ajax для регулярных запросов

  • 28 июля 2016 г. , редакция: 28 июля 2016 г.
  • Действия происходят в админке модуля.
    Значит так есть набор кнопок А Б В Г ... и 2 поля для дат (первое открывающая интервал дата, вторая закрывающая).
    Задача при нажатии на кнопку записать в поля временной интервал и отправить на сервер запрос в котором будут 2 параметра.

    Суть в следующем есть вот такая функция
    Код

    $('.time_pnl > .button').click(function() {

    $('.time_pnl > .button.active').removeClass("active");
    var markDate = $(this).addClass("active").attr('id');

    switch(markDate) {
    case 'yesterday':
    setTimeInterval("<time1>", "<time2>");
    break;
    case 'today':
    // только сегодня
    setTimeInterval("<time1>", "<time2>");
    break
    ....

    var sTimeISO = $('input[name="start_action_time"]').datepicker( "getDate" );
    var sUTC = Date.parse(sTimeISO)/1000;

    var fTimeISO = $('input[name="finish_action_time"]').datepicker( "getDate" );
    var fUTC = Date.parse(fTimeISO)/1000;

    diafan_ajax.init({
    data:{
    action: 'get_actions',
    module: 'statcollector',
    start_action_time: sUTC,
    finish_action_time: fUTC,
    },
    success: function(response) {
    if (response.actions) {
    window.actions = response.actions;
    }
    alert ("Далее будет обработка полученных данных");
    }
    });
    });

    Значит проблема заключается в следующем Запрос отсылается только 1 раз при первом нажатии. Как заставить diafan_ajax выполнять запрос после каждого нажатия?
  • 28 июля 2016 г. , редакция: 28 июля 2016 г.
  • Предположение о том что запрос отсылается 1 раз - оказалось не верно в такой конфигурации запросы уходят регулярно. Корень зла оказался в ответе. Запрос стандартен и стабилен. В результате его обработки на стороне сервера если возникает ошибка, то в объекте застевает её описание и нужно что-то с этим делать? Есть соображения у кого нибудь на этот счёт?
    • 28 июля 2016 г. , редакция: 28 июля 2016 г.
    • Код

      $(document).on('click', '.time_pnl > .button', function() {

      if(! $(this).hasClass("active"))
      return;

      $('.time_pnl > .button.active').removeClass("active");
      var markDate = $(this).addClass("active").attr('id');

      switch(markDate) {
      case 'yesterday':
      setTimeInterval("<time1>", "<time2>");
      break;
      case 'today':
      // только сегодня
      setTimeInterval("<time1>", "<time2>");
      break

      ....
      }

      var sTimeISO = $('input[name="start_action_time"]').datepicker("getDate");
      var sUTC = Date.parse(sTimeISO)/1000;

      var fTimeISO = $('input[name="finish_action_time"]').datepicker("getDate");
      var fUTC = Date.parse(fTimeISO)/1000;

      var custom_diafan_ajax = diafan_ajax;

      custom_diafan_ajax.init({
      data:{
      action: 'get_actions',
      module: 'statcollector',
      start_action_time: sUTC,
      finish_action_time: fUTC,
      },
      success: function(response) {
      if (response.actions) {
      window.actions = response.actions;
      }
      alert ("Далее будет обработка полученных данных");

      $('.time_pnl > .button.active').addClass("active");
      }
      });

      return false;
      });


      а лучше так

      Код

      var custom_diafan_ajax = diafan_ajax;

      $(document).on('click', '.time_pnl > .button', function() {

      if(! $(this).hasClass("active"))
      return;

      $('.time_pnl > .button.active').removeClass("active");
      var markDate = $(this).addClass("active").attr('id');

      switch(markDate) {
      case 'yesterday':
      setTimeInterval("<time1>", "<time2>");
      break;
      case 'today':
      // только сегодня
      setTimeInterval("<time1>", "<time2>");
      break

      ....
      }

      var sTimeISO = $('input[name="start_action_time"]').datepicker("getDate");
      var sUTC = Date.parse(sTimeISO)/1000;

      var fTimeISO = $('input[name="finish_action_time"]').datepicker("getDate");
      var fUTC = Date.parse(fTimeISO)/1000;

      if (window.custom_diafan_ajax !== undefined) { custom_diafan_ajax = diafan_ajax; }
      else { var custom_diafan_ajax = diafan_ajax; }

      custom_diafan_ajax.init({
      data:{
      action: 'get_actions',
      module: 'statcollector',
      start_action_time: sUTC,
      finish_action_time: fUTC,
      },
      success: function(response) {
      if (response.actions) {
      window.actions = response.actions;
      }
      alert ("Далее будет обработка полученных данных");

      $('.time_pnl > .button.active').addClass("active");
      }
      });

      return false;
      });
      • 28 июля 2016 г.
      • Вот я что то подобное пытался родить но что-то недорожал вернулся к первом моему варианту.
        А если попробовать заюзать try и catch и обработать ошибку? Можно будет вернуть работоспособность?
        • 28 июля 2016 г.
        • Предлагая вариант, который написан выше, я исходил из того, что Вы категорически против
          Цитата
          try и catch

          Но если это не так, то
          Цитата
          try и catch и обработать ошибку
          Именно так и надо действовать!!!
          Успехов.

Новости

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

Форум