
postでURLに対してデータを送信し、自分の画面は閉じる動きを実現したいです。
ですが、現在の状態では、submit()されずに自画面が閉じてしまいます。
onClick()イベント内
:
form.submit();
window.open('about:blank', '_self').close();
対して、以下のように自画面を閉じる処理をコメントアウトすると正常にsubmit()されます。
onClickイベント内
:
form.submit();
//window.open('about:blank', '_self').close();
submit()が完了するよりも前に画面が閉じてしまうために
送信できていないのだと想定しています。
そのため、
parent.window.open('about:blank', '_self').close();
を、submit()がちゃんと完了したら動くようにしたいです。
onClickイベント完了後、またsubmit()が完了後に発火するようなイベントはあるでしょうか?
また、そのほかに良い方法はあるでしょうか?
よろしくお願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
submitはその要素をページ遷移するため、submitした後のコードは走行しません。
submitする要素を非表示のiframeにして、iframeのloadイベントによって
submit結果を得て、その結果に応じて処理を実装すればできます。
下記、jqueryを使った場合ですが、イメージです。
<form id="test_form" method="post" target="_test_frame">
<!-- 色々html -->
<!-- アップロード時submitターゲット -->
<iframe id="test_frame" name="_test_frame" style="display:none;"></iframe>
</form>
function hoge() {
$('#test_frame').off();
$('#test_frame').on('load', function() {
var jsonText = $(this).contents().text(); // 受け取る結果はjson形式
try {
var response = $.parseJSON(jsonText);
} catch (e) {
// システムエラー時処理
}
if (response.error) {
// submit結果がエラーの時の処理
return;
}
// submit結果がOKの時の処理
});
$('#test_form').submit();
}
No.2
- 回答日時:
子ウィンドウ出ない限り自分自身をクローズすることはできませんが
そういう状態だと考えてよろしいですか?
これは子ウィンドウを閉じるプログラムをparentに仕込んでおいて
子はサブミットする前にsetTimeoutで自分を閉じるプログラムを仕込んでおいてください
No.1
- 回答日時:
Webブラウザのウィンドウに表示している画面上で入力を行い、それをWebサーバーへ送信(=submit)したのですから、サーバーからの処理結果を受け取らないと処理は完結しません。
Webの通信の基本は「Webブラウザ側からWebサーバーに対して通信を起こし、それを受けたWebサーバーが要求された内容の結果を返す」という往復の通信で処理が完結します。
これは静的コンテンツの場合でも、質問者様がやろうとしておられる動的コンテンツの場合でも同じです。
ですからsubmitしたその場でウィンドウを閉じるのではなく、submitでWebサーバーへ送った後、サーバーからの結果(の画面)を受信してウィンドウを閉じるという仕組みにしましょう。
ユーザが操作することなくウィンドウを閉じたいのであれば、現在submitに続いて行っているウィンドウcloseの処理をWebサーバーがWebブラウザに対して返す処理結果のウィンドウ内に移されればよいです。その場合はOnLoadイベントで起動するJavaScriptにするなどされればよいでしょう。
参考まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
submitした値を返したい
JavaScript
-
onClickとsubmitの処理順序
JavaScript
-
サブミット後、自動的に画面を閉じる
JavaScript
-
-
4
submitの処理の後別の画面を表示させる
HTML・CSS
-
5
子windowsからsubmit()後にclose()を実行するとsubmit()が起動しないが発生
JavaScript
-
6
変数の値によってsubmit後の動作を変更する
JavaScript
-
7
テーブルタグの中にdivを含めてはダメ?
HTML・CSS
-
8
Javascriptの値をJava(JSP)へ渡す方法
Java
-
9
formのsubmitを押すとモーダルを表示させたい
Visual Basic(VBA)
-
10
フォームで同じ複数のnameで違うvalueの送信
Java
-
11
javascriptでセッションを取得
JavaScript
-
12
formで特定のinputを送信しないようにしたい
JavaScript
-
13
onClickで関数呼出し後に、結果に応じてsubmitを実行する方法
JavaScript
-
14
<input type=hidden" >で配列(複数の要素)を渡したいとき?"
PHP
-
15
データベースのINT型項目にNULLはNG?
MySQL
-
16
ダブルクォーテーションのreplaceの方法
JavaScript
-
17
処理終了後、他のプログラムへPOST方式でsubmitして、移動する方法
Perl
-
18
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
19
javascriptでセレクトボックスのselected"を動的につ"
JavaScript
-
20
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
VBの画面で、全ウィンドウを一...
-
5
子ウィンドウの存在確認
-
6
1クリックでモーダルを開いてか...
-
7
ビルダーでポップアップウィン...
-
8
ウィンドウの2重起動を防止したい
-
9
子ウィンドウを常に手前表示、...
-
10
JavaScriptで指定Windowを最大...
-
11
子ウィンドウから親ウィンドウ...
-
12
window.Openをモーダルにできま...
-
13
JavaScriptでPDFを新規ウィンド...
-
14
孫ウインドウを閉じたら親をリ...
-
15
ブラウザ(IE)からエクスプロー...
-
16
親ウィンドウと子ウィンドウの...
-
17
子ウィンドウより親ウィンドウ...
-
18
<EXCEL/VBA> OUTLOOKのウインド...
-
19
インタネットからPDFファイルだ...
-
20
IEでのみ発生するJavaScriptエラー
おすすめ情報
公式facebook
公式twitter