Показать сообщение отдельно
  #5 (permalink)  
Старый 27.08.2018, 12:34
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Dilettante_Pro, onreadystatechange вызывается несколько раз по мере обработки запроса.
DVV, что значит не помогло? Смотрим, сейчас у тебя примерно так:
<style>
#statusMessage{
  width:100px;
  height:100px;
}
.form-success:after {
   content:"form-success"
}
.form-failure:after {
   content:"form-failure"
}
.form-awaiting:after {
   content:"form-awaiting" 
}
</style>


<div id="statusMessage">result: </div>

<script>
let request = new XMLHttpRequest();
request.open("GET", location.href)
request.send(null);
request.onreadystatechange = function() {
  if (request.readyState < 4) {
    //Добавляем картинку при ожидании отправки формы
    statusMessage.classList.add('form-awaiting');
  } else if (request.readyState === 4) {
    if (request.status == 200) {
      statusMessage.classList.add('form-success');               
    }
    else {
      statusMessage.classList.add('form-failure');
    }
  }
};
</script>
Меняешь классы местами, и внезапно работает:
<style>
#statusMessage{
  width:100px;
  height:100px;
}
.form-awaiting:after {
   content:"form-awaiting" 
}
.form-success:after {
   content:"form-success"
}
.form-failure:after {
   content:"form-failure"
}
</style>


<div id="statusMessage">result: </div>

<script>
let request = new XMLHttpRequest();
request.open("GET", location.href)
request.send(null);
request.onreadystatechange = function() {
  if (request.readyState < 4) {
    //Добавляем картинку при ожидании отправки формы
    statusMessage.classList.add('form-awaiting');
  } else if (request.readyState === 4) {
    if (request.status == 200) {
      statusMessage.classList.add('form-success');               
    }
    else {
      statusMessage.classList.add('form-failure');
    }
  }
};
</script>
чудесно, неправда ли?

Или второй предложенный вариант:
<style>
#statusMessage{
  width:100px;
  height:100px;
}
.form-success:after {
   content:"form-success"
}
.form-failure:after {
   content:"form-failure"
}
.form-awaiting:after {
   content:"form-awaiting" 
}
</style>


<div id="statusMessage">result: </div>

<script>
let request = new XMLHttpRequest();
request.open("GET", location.href)
request.send(null);
request.onreadystatechange = function() {
  if (request.readyState < 4) {
    //Добавляем картинку при ожидании отправки формы
    statusMessage.classList.add('form-awaiting');
  } else if (request.readyState === 4) {
    statusMessage.classList.remove('form-awaiting');
    if (request.status == 200) {
      statusMessage.classList.add('form-success');               
    }
    else {
      statusMessage.classList.add('form-failure');
    }
  }
};
</script>
__________________
29375, 35

Последний раз редактировалось Aetae, 27.08.2018 в 12:38.
Ответить с цитированием