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で質問しましょう!
似たような質問が見つかりました
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- iPhone(アイフォーン) iPhoneのボイスレコーダーが最近のこの画面のままで完了が押せない状況です。 むりやりボイスレコー 1 2022/06/04 23:30
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
submitした値を返したい
JavaScript
-
子windowsからsubmit()後にclose()を実行するとsubmit()が起動しないが発生
JavaScript
-
submitの処理の後別の画面を表示させる
HTML・CSS
-
-
4
サブミット後、自動的に画面を閉じる
JavaScript
-
5
onClickとsubmitの処理順序
JavaScript
-
6
formで特定のinputを送信しないようにしたい
JavaScript
-
7
変数の値によってsubmit後の動作を変更する
JavaScript
-
8
<a href=#" …>の意味を教えてください。"
HTML・CSS
-
9
formのsubmitイベントの発生についての質問です。
JavaScript
-
10
【HTML】1クリックで複数ファイルをダウンロードしたい
HTML・CSS
-
11
tableタグとformタグの組み合わせ
HTML・CSS
-
12
iframe内のformをサブミットする方法について
JavaScript
-
13
getElementsByNameで要素が取得できない
JavaScript
-
14
プルダウン選択を変更すると、変更する前に戻るJavaScript
JavaScript
-
15
フォーム内で記入したクエリ送信後自動的にフォーム内をリセットする方法
JavaScript
-
16
submit後、同じ入力欄に戻らせたい!
JavaScript
-
17
同じIDで定義した要素の配列を取得したいが
JavaScript
-
18
【jQuery】input nameの文字列を変数を使い動的にする方法
JavaScript
-
19
チェックボックスの返す値
CGI
-
20
submitボタン押下時にPOSTされるデータを追加
JavaScript
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
VBAで任意のウインドウのサイズ...
-
Javascript_submit()完了後に処...
-
VBの画面で、全ウィンドウを一...
-
JavaScriptで指定Windowを最大...
-
親ウィンドウから子ウィンドウ...
-
ウィンドウ名からウィンドウオ...
-
GetAncestorのGA_ROOTとGA_ROOT...
-
window.close()で確認メッセー...
-
子→親ウインドウへデータを受け...
-
ウィンドウサイズを開いたとき...
-
JavaScriptでPDFを新規ウィンド...
-
window.openで新しいページを後...
-
VBScriptでリンクをクリックし...
-
ウィンドウの2重起動を防止したい
-
Access2007では、フォームのウ...
-
1クリックでモーダルを開いてか...
-
秀丸エディタでHTMLタグテキス...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
デスクトップ画面を4分割するには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
VBAで任意のウインドウのサイズ...
-
ウィンドウの2重起動を防止したい
-
window.Openをモーダルにできま...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
ウィンドウ名からウィンドウオ...
-
VBの画面で、全ウィンドウを一...
-
子ウィンドウの存在確認
-
初心者javascript グーグルクロ...
-
インタネットからPDFファイルだ...
-
親ウィンドウから開いた子ウィ...
-
子ウィンドウより親ウィンドウ...
-
1クリックでモーダルを開いてか...
-
子ウィンドウを常に手前表示、...
-
ポップアップと作業ウィンドウ...
-
IEでのみ発生するJavaScriptエラー
-
ブラウザ(IE)からエクスプロー...
-
JavaScriptで指定Windowを最大...
-
リンク時、親ウインドウを最前...
おすすめ情報