ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

AJAXを使わずSubmitで、画面遷移なしにサーバアクセスする-ファイルアップロード等で使う

2013-09-26 09:52:58 | JavaとWeb
サーバーアクセスする場合、
  画面遷移させてよいなら、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なので見えない

サーバーの結果は、こんなかんじ

<!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(){
parent.myalert("このデータを親へ");
});
</script>

<body>

やっほ~

</body>
</html>


JQueryで、document.readyしたとき($(function(){ の中)
parent.myalert();を実行する。
この場合、IFRAMEの親、つまり上記oya.htmのmyalertを
実行する。
親に渡したい値は、引数にしてある。
上記の例の場合”このデータを親へ”というのが渡すデータ

親側では、この引数の値を見て、エラー処理や正常系処理を行う。

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« RedHat Enterprise Linux試用... | トップ | デザイナーの上流工程進出の... »
最新の画像もっと見る

JavaとWeb」カテゴリの最新記事