layer 弹出层form表单提交刷新弹出层 造成ajax成功后不执行success

这是我新来的一家公司第一个星期碰到的问题。以前用ssh框架没有碰到过这种情况。

layer 在弹出层做表单提交 点击提交可以和后台交互,但是提交完成后ajax的success不执行。我很郁闷,我猜想是因为点击提交后刷新了弹出层,当成功后,ajax保留的上次提交的报头信息和刷新完的页面信息不一样,所以ajax就执行不了了。就相当于你爬山上去走的这条路,下山时路中间有一段毁了,你要绕路,这样在这条路上等你的人肯定等不到。最后找到原因,太不细心了,在最后面忘记加return false了。


   

 

//监听提交
  form.on('submit(demo1)', function(data){

   var args = JSON.stringify(data.field); //这里提交的是json格式的。

如果是form表单,最好在页面执行一次序列化。这个是你的框架里没有全局的序列化方法时。

var args = $("#workCalendarAdd").serialize();  这里的id就是form表单的id

$.ajax({
type:"post",
url:url,
data:args,
success:function(data){
if('success' == data){
var index = parent.layer.getFrameIndex(window.name);  
setTimeout(function(){parent.layer.close(index)}, 1000);
layer.msg("保存成功"); 
  }else{
  layer.msg('保存失败,请重新保存');  
  }
}
});

    return false; // 这里很重要,一定要加这个。要不然提交后弹出层会刷新一次,从而不执行ajax的success

  });

 

提交的过程又碰到一个问题就是页面的日期类型和实体类的不对应,提交就报错刚开始很郁闷,以前还真没有碰到过这种情况,第一次遇到。最后在别人的提醒下在controller里面加了时间转换器,解决了。

        @InitBinder  
public void initBinder(WebDataBinder binder) {  
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");  
dateFormat.setLenient(false);  
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}

你可能感兴趣的:(java)