前提・実現したいこと
親画面からwindow.open()で子画面を開く
↓
子画面で$.ajax()を呼び出し、必要な処理を行う
↓
子画面でwindow.close()を実行し、子画面を閉じる
という流れを実現させたいです。
しかし、ajaxを呼び出す部分の後にwindow.close()があると、なぜかajaxがsuccess:ではなくerror:の方に分岐します。
該当のソースコード
子画面側:
function setString(val, form_id) { if (!window.opener || window.opener.closed) { // 親ウィンドウが存在しない window.close(); } else { debugger; //止まる // 親ウィンドウのオブジェクトを操作 window.opener.document.getElementById('ZAIRYOID' + form_id + "_input").value = val; //問題なく実行される ZAIRYOID(val, form_id, window.opener.window.zairyo_list); //ajaxを実行する関数 debugger; //止まる window.close(); //このままだとajaxがerrorになり、コメントアウトするとsuccessになる } }
ajaxを実行している関数:
function ZAIRYOID(new_ZAIRYOID, num, zairyo_list){ debugger; //止まる $.ajax({ type: 'post', url: 'ZAIRYOID_changed.php', data: {'new_ZAIRYOID' : new_ZAIRYOID}, success: function(result){ debugger; //止まらない! //必要な処理 }, error: function(){ debugger; //止まらない! alert('読み込み失敗'); //デベロッパーツールを開いていれば出てこず、開いていなければ出てくる } }) }
子画面側のwindow.closeをコメントアウトすると、画面が閉じないこと以外は問題なく動作します。
何が起きているのでしょうか?どこを直せばきちんとsuccessに分岐してくれると思いますか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/20 14:19