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も見ています
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
submitした値を返したい
JavaScript
-
子windowsからsubmit()後にclose()を実行するとsubmit()が起動しないが発生
JavaScript
-
submitの処理の後別の画面を表示させる
HTML・CSS
-
-
4
onClickとsubmitの処理順序
JavaScript
-
5
サブミット後、自動的に画面を閉じる
JavaScript
-
6
フォーム内で記入したクエリ送信後自動的にフォーム内をリセットする方法
JavaScript
-
7
変数の値によってsubmit後の動作を変更する
JavaScript
-
8
同じIDで定義した要素の配列を取得したいが
JavaScript
-
9
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
10
tableタグとformタグの組み合わせ
HTML・CSS
-
11
HTTPリクエストヘッダーの設定と遷移
HTML・CSS
-
12
Javascriptの値をJava(JSP)へ渡す方法
Java
-
13
【jQuery】input nameの文字列を変数を使い動的にする方法
JavaScript
-
14
<a href=#" …>の意味を教えてください。"
HTML・CSS
-
15
onClickで関数呼出し後に、結果に応じてsubmitを実行する方法
JavaScript
-
16
JSPやサーブレットでSystem.out.println()などでコンソールに出力できますでしょうか?
Java
-
17
iframe内のformをサブミットする方法について
JavaScript
-
18
SELECT 文 GROUP での1件目を取得
SQL Server
-
19
ループ処理の際、最後だけ,"をつけたくない"
Java
-
20
データベースのINT型項目にNULLはNG?
MySQL
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ポップアップと作業ウィンドウ...
-
ワードの「作業ウィンドウ」が...
-
ウィンドウサイズの固定
-
エクセルのシート上に別のシー...
-
VBA
-
VBの画面で、全ウィンドウを一...
-
ウィンドウサイズの固定(変更...
-
クリックすると別窓を中心にオ...
-
ビルダーでポップアップウィン...
-
ウィンドウの2重起動を防止したい
-
孫ウインドウを閉じたら親をリ...
-
親ウィンドウの切り替え方法
-
Javascript_submit()完了後に処...
-
画像にオンマウスで子ウインド...
-
ブラウザ(IE)からエクスプロー...
-
タスクバーに重ならないように...
-
エクセルの1行目と1列目を同時...
-
テキストの値が代入された後に...
-
画面を閉じる。「いいえ」の場...
-
window.open( ) の第2引数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
VBAで任意のウインドウのサイズ...
-
ウィンドウの2重起動を防止したい
-
VBの画面で、全ウィンドウを一...
-
子ウィンドウの存在確認
-
ポップアップと作業ウィンドウ...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
デスクトップ画面を4分割するには
-
親ウィンドウから開いた子ウィ...
-
子ウィンドウから親ウィンドウ...
-
タスクバーに非表示
-
子ウィンドウより親ウィンドウ...
-
ウィンドウ名からウィンドウオ...
-
履歴を残さないResponse.Redire...
-
1クリックでモーダルを開いてか...
-
JavaScriptで指定Windowを最大...
-
孫ウインドウを閉じたら親をリ...
-
window.Openをモーダルにできま...
-
子→親ウインドウへデータを受け...
おすすめ情報