如何在窗口位置之前显示消息 2 秒

how to display msg for 2 seconds before window.location

本文关键字:显示 消息 窗口 位置      更新时间:2023-09-26

JS:

  $.ajax({
    url: url,
    method: 'POST',
    data: data,
  }).done(id => {
    this._handleMsg('data saved.');
    const newUrl = dutils.urls.resolve( 'test', { test_id: id } );
    window.location.replace(newUrl);
  }).fail(( jqXHR, textStatus, errormsg ) => {
    this._handleError('Sorry. Report not saved. Reason:' + errormsg); // eslint-disable-line no-alert
  });

 _handleMsg(msg) {
    if (msg) {
      $('#header .form-group').addClass('has-msg');
      $('.report-error').html(msg).delay(200000).fadeIn(500000);
    } else {
      $('#header .form-group').removeClass('has-msg');
    }
  },

SCSS:

.report-error{
    visibility: hidden;
    text-align: center;
    color: red;
}

.has-msg, .has-msg:focus, .has-msg:hover{
    input {
        border-color: #843534;
        -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;
        box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;
        background-color: #ffffff;
        outline: 0;
    }
    label, .report-error{
        visibility: visible;
        color: green;
        font-size:30px;
    }
}

我需要显示消息"数据已保存"2秒钟,然后重定向到另一个URL。 但似乎 $('.report-error').html(msg).delay(200000).fadeIn(500000); 不起作用。

知道吗?谢谢

更新

 203         this._handleMsg('data saved.');
 204         setTimeout(()=>{
 205           const newUrl = dutils.urls.resolve( 'test', { test_id: id } );
 206           window.location.replace(newUrl);
 207         }, 2000);
$.ajax({
    url: url,
    method: 'POST',
    data: data,
  }).done(id => {
    this._handleMsg('data saved.');
    const newUrl = dutils.urls.resolve( 'test', { test_id: id } );
   //below function will call after 2s that solve your purpose
    setTimeout(function () { window.location.replace(newUrl); }, 2000);
  }).fail(( jqXHR, textStatus, errormsg ) => {
    this._handleError('Sorry. Report not saved. Reason:' + errormsg); // eslint-disable-line no-alert
  });

试试 JavaScript 的超时:setTimeout()(查看此处了解更多信息)

这是一个使用 setTimeout 和调用带有参数的函数的小提琴。

代码本身如下所示:

function alertMessage(firstMessage, secondMessage) {
  alert(firstMessage + ' ' + secondMessage);
}
setTimeout(
  alertMessage, // name of the function to be called after the delay
  1000, // the size of the delay in ms
  'Hello world!', // the first parameter to be parsed to the called function
  'You rock!' // the second parameter to be parsed to the called function
);

我希望这有所帮助。