
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も見ています
-
【教えて!goo ウォッチ 人気記事】風水師直伝!住まいに幸運を呼び込む三つのポイント
記事を読む>>
-
submitした値を返したい
JavaScript
-
onClickとsubmitの処理順序
JavaScript
-
サブミット後、自動的に画面を閉じる
JavaScript
-
4
Javascriptの値をJava(JSP)へ渡す方法
Java
-
5
フォームで同じ複数のnameで違うvalueの送信
Java
-
6
テーブルタグの中にdivを含めてはダメ?
HTML・CSS
-
7
formで特定のinputを送信しないようにしたい
JavaScript
-
8
formのsubmitを押すとモーダルを表示させたい
Visual Basic(VBA)
-
9
html でのテキスト結合について
その他(プログラミング・Web制作)
-
10
複数のsubmitボタンで押されたボタンを取得する方法
JavaScript
-
11
変数の値によってsubmit後の動作を変更する
JavaScript
-
12
submitの処理の後別の画面を表示させる
HTML・CSS
-
13
onClickで関数呼出し後に、結果に応じてsubmitを実行する方法
JavaScript
-
14
javascriptでセッションを取得
JavaScript
-
15
HTMLからフォルダを開きたい
HTML・CSS
-
16
<input type=hidden" >で配列(複数の要素)を渡したいとき?"
PHP
-
17
submitボタン押下後、disabledを無効に!
JavaScript
-
18
フォーム内で記入したクエリ送信後自動的にフォーム内をリセットする方法
JavaScript
-
19
SELECT 文 GROUP での1件目を取得
SQL Server
-
20
別ウィンドウへのsubmitの挙動がおかしいです
JavaScript
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
ウィンドウの2重起動を防止したい
-
5
<EXCEL/VBA> OUTLOOKのウインド...
-
6
response.redirect <<URL>> で...
-
7
window.Openをモーダルにできま...
-
8
IEでのみ発生するJavaScriptエラー
-
9
VBの画面で、全ウィンドウを一...
-
10
インタネットからPDFファイルだ...
-
11
孫ウインドウを閉じたら親をリ...
-
12
チェックボックス付きツリービュー
-
13
子ウィンドウから親ウィンドウ...
-
14
javascriptで開いたウィンドウ...
-
15
子ウィンドウを常に手前表示、...
-
16
助けてGmailでボタン表示が消え...
-
17
エラー:アクセスが拒否されました
-
18
JavaScriptでPDFを新規ウィンド...
-
19
ウィンドウサイズを開いたとき...
-
20
子ウィンドウの存在確認
おすすめ情報
公式facebook
公式twitter