用户单击“提交”按钮时需要POST并关闭窗口

时间:2013-09-27 17:42:51

标签: javascript html ruby-on-rails

现在我有以下内容:

<%= submit_tag 'Save' ,{:onClick => "window.close()"} %>

这适用于关闭窗口。不幸的是,它会在表单POST到服务器之前关闭窗口。

该窗口是使用主页中的链接创建的:

function amenitiesPopup(){
  window.open("/amenities", "Swag", "status,width=600,height=800,resizable,scrollbars=yes","POS"); 
}

没有:onClick => "window.close()"表单POST按预期方式。只需要事后关闭它。

由于

编辑:我的解决方案是让控制器返回一个字符串文字:

if (params[:search])
    ...
    render :text => '<body onload="window.close()"></body>'
end

这将跳过任何布局/视图项目,只渲染一个自动关闭的空体

2 个答案:

答案 0 :(得分:3)

回来

<body onload="window.close()">

从服务器

,这样你的POST肯定会在窗口关闭之前通过。因此,您不必关闭提交文档,而是关闭服务器收到的文档作为回复。此外,如果您想在之后关闭窗口,可以考虑发布到iframe,具体取决于您希望实现的目标。

答案 1 :(得分:1)

function onSubmit(){
    $.ajax({
        //POST info and URL etc goes here
    }).done(function(){
        window.close();
    });
}

您需要指定jquery ajax api(url,data等)所需的所有参数。

如果您在没有ajax的情况下提交,您将转到您提交的页面并且将无法再控制您的窗口,除非您控制目标页面,在这种情况下您应该将window.close添加到您的脚本中目的地页面:

<script>
    window.close();
</script>