如何显示成功消息并一起刷新页面

时间:2019-06-11 08:41:42

标签: jquery html ajax

我有使用AJAX处理用户数据的JSP Servlet代码。在AJAX的success函数中,我想向用户显示一条成功消息,并且还希望清除表单中的所有字段,因此我重新加载页面。但是,当我重新加载时,警报消失了。解决方案是什么?

$.ajax({
  url: '../Groups',
  data: {
    "mode": "create_assign",
    "name": name,
    "desc": desc,
    "status": status,
    "add": listadd
  },
  type: 'POST',
  success: function(response) {
    $.notify({
      message: "Created group successfully.",
    }, {
      type: "success"
    });
    location.reload();
  },
  error: function(jqXHR, textStatus, message) {
    $.notify({
      message: "System Error: Please try again or contact system admin.",
    }, {
      type: "danger"
    });
  },
  complete: function() {
    $('.overlay').hide();
  }
});

3 个答案:

答案 0 :(得分:1)

发出AJAX请求后重新加载页面是相当多余的。它使AJAX请求的整个要点变得毫无意义。

如果您只想在提交后清除表单中的字段,则可以手动执行以下操作:

$select = Mage::app()->getLayout()->createBlock('core/html_select'); 
$select->setData(array(
'name' => $name,
    'class' => $class,
    'id' => $id,
    'aria-required' => $ariaRequired //doesn't work
));

或者,您可以将success: function(response) { $.notify("Created group successfully.", "success"); $('#yourForm input').val(''); }, 重置为其初始状态:

form

请注意,以上示例使用了对success: function(response) { $.notify("Created group successfully.", "success"); $('#yourForm').trigger('reset'); }, 的较为简短的速记,如documentation

所示

答案 1 :(得分:0)

或者代替重新加载页面,您可以显示成功消息,然后获取表单输入并清除它们,如下所示:

$('#yourForm').each(function(){
    this.reset();
});

答案 2 :(得分:-1)

如Chris所述,它是多余的,但是您是否考虑过使用setTimeout()?

例如,您可以这样做:

function successFunction(response) {
  $.notify({ message: "Created group successfully." }, { type: "success" });
  setTimeout(location.reload(), 4000); // time in milliseconds
}

,然后在您的主要ajax调用中添加:

success: successFunction(response)