• ベストアンサー

JavaScriptのsubmit()がされない

お世話になります。 現在JAVAで開発を行っています。 原因不明の問題が出たので質問させていただきます。 アップロードを子画面に任せたのもを実装しました。 処理の流れは、 1 親ページから子ページを開く。 2 子ページで画像を選びアップする。 3 画像確認画面が開く。 4 期待する画像の場合は、OKボタンを押す。 5 子画面は閉まる。 4の時に正しくsubmitできていない可能性があります。 確認画面の処理 function hogehoge() { window.opener.form.gazou.src = "hogehoge/test.jpg" //1 window.opener.form.gazou.width = "100"; //2 window.opener.form.gazou.height = "100" //3 document.form.flag.value = "true"; //4 window.document.form.submit(); //5 window.close(); //6 } <input type=button name=button1 value=" OK " onClick="hogehoge();"> 1.2.3.6は実際に画面で挙動が確認できるため問題ないと思います。 4.5に関してはJAVAの方のログで確認できる場合と確認できない場合があります。 submitされているならログにはかれているはずなのですが、 はかれていない場合があり、このとき何らかの理由でsubmitが行われていないのではないかと考えています。 IEのバグでwindow.close時にセッションが切れるというバグがあるのを確認致しましたが この可能性があるかもしれません。 どなたか解る方ご教授お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#19197
noname#19197
回答No.4

>submitされる前にcloseされることはありえるのでしょうか? ありえます。 一般に、何かしらの処理の途中でも×ボタンでウィンドウは閉じられますよね。 それと同じ原理です。 >例えばこの処理がある程度時間のかかるものの場合 リクエスト中にウィンドがcloseされると処理は中断されてしまうのでしょうか? その通りです。 当然、サーバーにリクエストが送信されないので中断されます。 余計なお世話かもしれませんが、この程度の知識もないのに開発をしようと考えてるのが甘いと思います。 この画面についても、つくりが安直すぎるというかもっとうまくできる方法があると思うのですが。

can5974
質問者

お礼

お世話になります。 >余計なお世話かもしれませんが、この程度の知識もないのに開発をしようと考えてるのが甘いと思います。 この画面についても、つくりが安直すぎるというかもっとうまくできる方法があると思うのですが。 申し訳ございません。まさに身にしみております。 登録クラスの一番上にSystem.out.printで通過しているかログをはいてみたところ、 ログが出ないときがありました 登録クラスまでリクエストがたどり着いていない場合があるようです。 やはりwindow.closeがすぐに走るのが問題のようですね 引き続き解析してみます。

その他の回答 (5)

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.6

おっと。。。 メモ帳にカキカキしながら貼り付けていたら、貼り付けミスがあった^^; とりあえず、「window.close」の命令文をコメントにして動かしてみればはっきりするんではないでしょうか? という文章をペーストミスで張り落としておりました。 試してみては?-w-

can5974
質問者

お礼

お世話になりました。 完了画面又は、完了画面でクローズで対応しようと思います。 有難うございました。 また機会があればよろしくお願い致します。

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.5

とりあえずー。。。 >>すべての処理は登録クラスに飛びます。 ですが、登録クラスは親の方。。。ですよね? 親から子を開いて、子で選択した情報を親に渡し。。。って事は、子から親に情報を渡した時点で、画面をリロードするかとは思うんですがどうでしょうか? >>親画面に画像をJavaScriptで写し とありますが、リロードと同時に画像名を子から親に渡して、親に表示させる。だけですよね? 実際に見てみないと、疑問点が残るばかりです。はい^^;

can5974
質問者

お礼

お世話になります >>親から子を開いて、子で選択した情報を親に渡し。。。って事は、子から親に情報を渡した時点で、画面をリロードするかとは思うんですがどうでしょうか? 親画面自体はリロードしておりません >> とありますが、リロードと同時に画像名を子から親に渡して、親に表示させる。だけですよね? そのとおりです window.closeをやめ 遷移先で完了画面を作成した方がよさそうですね

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.3

こんちくはー。 んー。。。やりたいことが、イマイチわからない^^; 何度か読み返してみたんですけどね。。。 まず、載せてあるソースは子画面のソース。。。ですかね? 「OK」ボタンを押したら、画像が開いて、フラグを立てて、submitして、勝手に閉じる。。。んですかね? とりあえず、どこに対してsubmitしてます? ちょっと、自分の理解度が低いのか、理解できなかったので、補足願いますです。

can5974
質問者

お礼

こんにちは,お世話になります。 説明不足で申し訳ございません。 補足させて頂きます。 上に書いているのは確認画面(子)のソースです すべての処理は登録クラスに飛びます 親クラスで「画像ボタン」を押すと子画面が開きます 子画面で画像を選らんで「確認ボタン」を押すと登録クラスでチェックが走りエラーが無い場合は確認画面(子)になります 確認画面(子)で「OKボタン」を押すと親画面に画像をjavascriptで写し 登録クラスにsubmit後ウィンドを閉じます。 window.closeが早すぎるのが問題な気がしてきました

noname#19197
noname#19197
回答No.2

submitされていないのは、何で確認されましたか? セッションが切れるバグとは無関係な気がします。 5行目と6行目は、非同期なので submitで完全にリクエストが送信される前にウィンドウを閉じてしまっているので、リクエストが送信されていないのではないでしょうか? 5行目と6行目にalertなりを入れて、しばらく待機すると正しくsubmitされると思います。

can5974
質問者

お礼

お世話になります。 正しく動いている場合はtomcatのログがはかれます。 ログがはかれない場合に正しく動いていないことがあったのでsubmitできていないのではないかと考えました。 submitされる前にcloseされることはありえるのでしょうか? 例えばこの処理がある程度時間のかかるものの場合 リクエスト中にウィンドがcloseされると処理は中断されてしまうのでしょうか?

  • BigBoin
  • ベストアンサー率36% (4/11)
回答No.1

formにはactionを書いてますよね? サーバー側に行ってるか、リクエストは行ってるかどうかは呼んでいるはずのjavaで確認(デバッグする、System.out.printする等)してみてはどうでしょう?

can5974
質問者

お礼

お世話になります。 もちろんactionは書いています 基本的には問題なく動いています テスト環境でSystem.out.printをおこなってみます

関連するQ&A