@AnnaShant

Можно ли сделать подгрузку данных не сразу, а после нажатия на определенную кнопку?

Код
'use strict';
(function () {
  var dataLoad = [];
  var onSuccess = function (data) {
    data.forEach(function (item, i) {
      if (item.offer) {
        item.id = i;
        item.name = i;
        dataLoad.push(item);
      }
    });
    return dataLoad;
  };
  window.backend.load(onSuccess);

  window.dataLoad = {
    dataLoad: dataLoad
  };
})();


Еще:
'use strict';
(function () {
  var Url = {
    DOWNLOAD: 'https://js.dump.academy/keksobooking/data',
    UPLOAD: 'https://js.dump.academy/keksobooking'
  };

  var CODE_SUCCESS = 200;
  var TIMEOUT = 5000;

  var mapElement = document.querySelector('.map');

  var xhrSetup = function (onLoad) {
    var xhr = new XMLHttpRequest();
    xhr.responseType = 'json';

    xhr.addEventListener('load', function () {
      if (xhr.status === CODE_SUCCESS) {
        onLoad(xhr.response);
      } else {
        window.backend.loadError();
      }
    });

    xhr.addEventListener('error', function () {
      window.backend.loadError();
    });
    xhr.addEventListener('timeout', function () {
      window.backend.loadError();
    });

    return xhr;
  };

  var fragment = document.createDocumentFragment();
  var loadError = function () {
    var errorBlock = document.querySelector('#error').content.querySelector('.error');
    errorBlock.cloneNode(true);
    var errorButton = errorBlock.querySelector('.error__button');

    var onErrorClose = function () {
      errorBlock.parentNode.removeChild(errorBlock);
      document.removeEventListener('click', onErrorClose);
      window.map.inactivateMap();
      window.form.inputClean();
      window.map.mapPinMainElement.addEventListener('mouseup', window.map.activateMap);
      window.map.mapPinMainElement.addEventListener('keydown', window.map.keydownActivateMap);
    };

    errorButton.addEventListener('click', onErrorClose);
    document.addEventListener('click', onErrorClose);

    errorBlock.addEventListener('keydown', function (evt) {
      if (evt.keyCode === window.backend.escCode) {
        onErrorClose();
      }
    });

    fragment.appendChild(errorBlock);
    mapElement.appendChild(fragment);
  };

  window.backend = {
    save: function (data, onLoad, onError) {
      var xhr = xhrSetup(onLoad, onError);

      xhr.timeout = TIMEOUT;

      xhr.open('POST', Url.UPLOAD);
      xhr.send(data);
    },

    load: function (onLoad, onError) {
      var xhr = xhrSetup(onLoad, onError);

      xhr.timeout = TIMEOUT;

      xhr.open('GET', Url.DOWNLOAD);
      xhr.send(xhr.timeout);
    },

    loadError: loadError,

    escCode: 27
  };
})();
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ответы на вопрос 2
Robur
@Robur
Знаю больше чем это необходимо
да. Не вызывайте load сразу а вызывайте по нажатию на кнопку
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Используйте includeHTML - будет намного проще управлять загрузками.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы