这是我新来的一家公司第一个星期碰到的问题。以前用ssh框架没有碰到过这种情况。
layer 在弹出层做表单提交 点击提交可以和后台交互,但是提交完成后ajax的success不执行。我很郁闷,我猜想是因为点击提交后刷新了弹出层,当成功后,ajax保留的上次提交的报头信息和刷新完的页面信息不一样,所以ajax就执行不了了。就相当于你爬山上去走的这条路,下山时路中间有一段毁了,你要绕路,这样在这条路上等你的人肯定等不到。最后找到原因,太不细心了,在最后面忘记加return false了。
<div class="layui-form-item">
<button class="layui-btn" lay-submit="" lay-filter="demo1">跳转式提交</button>
</div>
//监听提交
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('保存失败,请重新保存');
}
}
});
});
提交的过程又碰到一个问题就是页面的日期类型和实体类的不对应,提交就报错刚开始很郁闷,以前还真没有碰到过这种情况,第一次遇到。最后在别人的提醒下在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));
}