window.close失效与子页面提交

我的需求是,在页面上点击修改,弹出子页面,在子页面选择内容后提交,同时关闭子页面。

我的子页面提交时酱紫的

     function returnvalue()
    {
var fid=$("input[type='radio'][name='selectRadio']:checked").val();
$("#fid").val(fid);
               window.close();
    }
那么问题来了,我点击提交后 子页面关闭,但是数据没有修改。

我并没有坐以待毙,之后window.close();注释后,再提交。

欣喜的结果出现了:数据修改成功,但是     子页面并没有关闭。

放心我是不会屈服的,度娘了一番,发现是表单提交和window.close()冲突造成的,
大神给我的回复是 用ajax提交。用了果然管用

     function returnvalue()
{
var fid=$("input[type='radio'][name='selectRadio']:checked").val();
var id=$("#id").val();

    var data="fid="+fid+"&id="+id;
$.ajax({
async : false,
cache : false,
type : 'POST',
data:data,
dataType : "json",
url : basePath +"showselfAnchor/familyAndAnchorAction!updateFamily",
success : function(msg) {
    showMessage(msg.resultText);
                   window.close();
},
error : function(e) {//请求失败处理函数 
showMessage('操作失败!'+e.resultText);
}
});
}
经过修改,子页面提交和关闭没问题了,但是我发现,子页面关闭后 父页面数据并没有刷新,做就做的完美,我希望做到子页面关闭后,父页面的数据同时刷新。于是有在
父页面加了回调函数
  function callback() {
refreshWin();
}
function refreshWin() {
var url = 'showselfAnchor/familyAndAnchorAction!queryList?type=query';
window.location.href = url;
}

在子页面window.close();前面加上
window.opener.callback();调用父页面回调函数来刷新父页面数据。

总算符合了我的要求。这就是编程的魅力所在吧,不仅要解决问题,而且要优雅完美地解决。
希望有同样的问题的朋友,能够受用

你可能感兴趣的:(JavaScript,Ajax)