Задать вопрос
  • Как минимизировать адресную строку safari & chrome mobile ios?

    Попробуйте вот так:
    window.addEventListener("load",function() {
        setTimeout(function() {
            window.scrollTo(0, 1);
        }, 1000);
    });
    Ответ написан
    Комментировать
  • Почему JSON.stringify теряет часть объекта?

    tdesu
    @tdesu Автор вопроса
    Решил проблему ;)
    Проблема была в том, что ридер файла работает в асинхроне, как и сказал Алексей Тен .
    Благодарю всех за помощь!
    Корректный ответ
    5e1daf62b288b013629026.png


    Поместил XHR отправку в отдельную функцию и вызываю только когда сработает "onload" у ридера файлов.
    Листинг

    let form = {};
    document.getElementById('ok').addEventListener('click', () => {
      if(document.getElementById('load_img').files.length > 0) {
        var img = document.getElementById('load_img').files[0];
        var reader = new FileReader();
        reader.readAsDataURL(img);
        reader.onload = function() {
          form.img = encodeURIComponent((reader.result).split(',')[1]);
          form.name = encodeURIComponent(document.getElementById('name').value);
          form.desc = encodeURIComponent(document.getElementById('desc').value);
          send();
        }
      } else {
        form.img = '';
        form.name = encodeURIComponent(document.getElementById('name').value);
        form.desc = encodeURIComponent(document.getElementById('desc').value);
        send();
      }
    
      console.log(form);
    });
    
    function send() {
      var xhr = new XMLHttpRequest();
      xhr.open('GET', 'https://host/api/?product.create=' + JSON.stringify(form));
      // xhr.send();
    
      console.log('Form: ' + form);
      console.log(JSON.stringify(form));
    
      xhr.onreadystatechange = () => {
        if(xhr.readyState == 4 && xhr.status == 200) {
          console.log(xhr.responseText);
          var data = JSON.parse(xhr.responseText);
    
          if(data.code == 1) {
            alert('Товар успешно создан');
            move('search');
          } else {
            alert('Ошибка! ' + data.text);
            move('search');
          }
        }
      }
    }

    Ответ написан
    Комментировать