如何在window.location之前显示msg 2秒

时间:2016-03-18 21:04:49

标签: javascript css ajax

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秒,然后重定向到另一个网址。但似乎 $('。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);

2 个答案:

答案 0 :(得分:0)

尝试JavaScript的超时:setTimeout()look here for more infos

这是a fiddle using 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
);

我希望这会有所帮助。

答案 1 :(得分:0)

$.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
  });