サーバーアクセスする場合、
画面遷移させてよいなら、Submitが使える
画面遷移させない場合は、AJAXを使う。
だけど、ファイルアップロードなどでは、inputタグのタイプfileで指定した、ファイルの内容はみれない(セキュリティの都合らしい)。ということは、AJAXでは送れない。
このようなケースのほかに、submitしちゃいたい(データいっぱいあるし・・・)だけど、画面遷移はしたくない!というときがある。
このようなとき、どうするか・・・
や
画面遷移なしでファイルアップロードする方法
http://blog.joyfullife.jp/archives/2007/04/17134117.php
というサイトに書いてあるけど、要するに
・IFRAME で、NAME="名前"で名前をつけて、style="display:none"のタグを書く
・formタグの属性にtarget="名前" と、IFRAMEのNAMEで書いたものをターゲット名として書く
・そうすると、submitされたとき、サーバーから帰ってきた値は、非表示のIFRAMEに
展開されるので、見えない
→画面遷移なしで、サーバーにアクセスできる。
しかし、サーバーアクセスしたあとで、処理結果が聞きたい場合がある。
そうする場合はどうするか・・・
さっきのつづき
・サーバー側のファイルは、JQueryで、document.readyしたときに、
親側(IFRAMEの親、すなわちsubmitした画面)の関数を呼び出す。
親側に渡したい値は、その関数の引数として渡す
・親側は、その関数を実行させられるので、そこで、適当に処理する。
■サンプル
こんなかんじ。
親側のプログラム(oya.htm)
入力項目の実行が実行されると、サーバー側に行く。
そして、サーバー側で処理した結果は、IFRAMEのNAME nodispにセットされる。
→display:noneなので見えない
サーバーの結果は、こんなかんじ
JQueryで、document.readyしたとき($(function(){ の中)
parent.myalert();を実行する。
この場合、IFRAMEの親、つまり上記oya.htmのmyalertを
実行する。
親に渡したい値は、引数にしてある。
上記の例の場合”このデータを親へ”というのが渡すデータ
親側では、この引数の値を見て、エラー処理や正常系処理を行う。
画面遷移させてよいなら、Submitが使える
画面遷移させない場合は、AJAXを使う。
だけど、ファイルアップロードなどでは、inputタグのタイプfileで指定した、ファイルの内容はみれない(セキュリティの都合らしい)。ということは、AJAXでは送れない。
このようなケースのほかに、submitしちゃいたい(データいっぱいあるし・・・)だけど、画面遷移はしたくない!というときがある。
このようなとき、どうするか・・・
や
画面遷移なしでファイルアップロードする方法
http://blog.joyfullife.jp/archives/2007/04/17134117.php
というサイトに書いてあるけど、要するに
・IFRAME で、NAME="名前"で名前をつけて、style="display:none"のタグを書く
・formタグの属性にtarget="名前" と、IFRAMEのNAMEで書いたものをターゲット名として書く
・そうすると、submitされたとき、サーバーから帰ってきた値は、非表示のIFRAMEに
展開されるので、見えない
→画面遷移なしで、サーバーにアクセスできる。
しかし、サーバーアクセスしたあとで、処理結果が聞きたい場合がある。
そうする場合はどうするか・・・
さっきのつづき
・サーバー側のファイルは、JQueryで、document.readyしたときに、
親側(IFRAMEの親、すなわちsubmitした画面)の関数を呼び出す。
親側に渡したい値は、その関数の引数として渡す
・親側は、その関数を実行させられるので、そこで、適当に処理する。
■サンプル
こんなかんじ。
親側のプログラム(oya.htm)
<!doctype html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js" type="text/javascript"></script> <script> function myalert(buf) { alert(buf); } </script> </head> <body> <form name="f1" id="f1" action="ko.htm" method="post" target="nodisp"> 入力項目<INPUT TYPE="text" NAME="arg1"/> <INPUT TYPE="SUBMIT" value="実行" /> </form> <IFRAME NAME="nodisp" id="naiyo" style="display:none"></IFRAME> </body> </html> |
入力項目の実行が実行されると、サーバー側に行く。
そして、サーバー側で処理した結果は、IFRAMEのNAME nodispにセットされる。
→display:noneなので見えない
サーバーの結果は、こんなかんじ
|
JQueryで、document.readyしたとき($(function(){ の中)
parent.myalert();を実行する。
この場合、IFRAMEの親、つまり上記oya.htmのmyalertを
実行する。
親に渡したい値は、引数にしてある。
上記の例の場合”このデータを親へ”というのが渡すデータ
親側では、この引数の値を見て、エラー処理や正常系処理を行う。