2

現在、私は次のものを持っています:

<%= 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()"期待どおりにフォームが投稿されていない場合。後で閉じる必要があります。

ありがとう

編集:私の解決策は、コントローラーに文字列リテラルを返すようにすることでした:

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

これにより、レイアウト/ビュー アイテムがスキップされ、自動的に閉じる空のボディがレンダリングされます。

4

2 に答える 2

3

戻るだけ

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

そうすれば、ウィンドウが閉じる前に POST が確実に実行されます。そのため、送信ドキュメントから閉じるのではなく、サーバーからの返信として受信したドキュメントで閉じます。また、後でウィンドウを閉じたい場合は、目的に応じて代わりに iframe に投稿することを検討してください。

于 2013-09-27T17:46:43.363 に答える
1
function onSubmit(){
    $.ajax({
        //POST info and URL etc goes here
    }).done(function(){
        window.close();
    });
}

jquery ajax API に必要なすべての引数 (url、データなど) を指定する必要があります。

ajax なしで送信すると、送信先のページに移動し、ウィンドウを制御できなくなります。宛先ページを制御しない限り、その場合は、window.close を宛先ページのスクリプトに追加する必要があります。

<script>
    window.close();
</script>
于 2013-09-27T17:44:45.597 に答える