我想要的效果是,删除成功(ajax提交的)后关闭确认框,刷新第二层页面window.parent.location.reload(); 这种刷新不行,一刷新弹框都没了(相当于刷新的父页面,所以不可行)var index=parent.layer.getFrameIndex(window.name);parent.layer.close(index);这种只能关闭 不能刷新页面
你可以先layer.close()关掉确认对话框,然后location.reload()刷新第二层。window.parent.location.reload()刷新的并不是你第二层的页面,
而是你有查看按钮的那个,因为你的ajax请求删除时候,方法本来就是在第二层调用的,直接location.reload()刷新,就是刷新的第二层。调之前先把layer弹出的确认框关了就可以了。
刷新第二层页面的内容,用window.parent.location.reload(),会重新加载。
可以在删除的确认按钮做一个回调函数,回调函数callbakc内做刷新。
或者通过隐藏一个刷新按钮,确认删除后触发刷新。最好建议回调函数
不懂你的结构,直接location.reload()刷新呢。。
刷新 直接location.reload()
使用页面刷新肯定不行的,整个页面重新初始化了。只能在弹窗关闭后执行二层窗口的ajax load数据。具体代码要看你的页面结构了
第二层页面应该也是通过js触发的吧,在点击删除确认后再回调一遍第二层页面的触发函数不是就可以吗
问题已经解决了,删除成功后 用 top.layer.close(index); location.reload();
top.layer.confirm('确认要删除该方案吗?',{
btn: ['确认','取消'],
title:"系统提示"
}, function(index){
$.ajax({
url: "/xxxxxxx/xxx/remove.json",
type: "post",
data: {"id":id},
dataType: "json",
async:false,
success: function(data){
if (data.success){
top.layer.close(index);
location.reload();
} else {
layer.msg("删除失败!");
}
}
});
}, function(){
layer.closeAll();
});
首先请求成功获取确认框的index然后直接layer.close("这个index");之后第二层局部刷新也就是再次调用ajax重新加载数据。这样就不需要刷新了