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

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

WebAPIでXMLで返すようにすると、画面部分が完全分離できる:その2クッキーを使わない値渡し

2007-04-02 16:58:41 | JavaとWeb

 前に書いたWebAPIでXMLで返すようにすると、画面部分が完全分離できる:その1-方法1(16時修正)で、


 とはいえ、次の画面に変数をわたすには、どーするの?
 サーバーならセッションに入れるという手があるけど、
 クライアント側で変わった場合。。
 クッキーでもつかうの?

 って言う話は、このシリーズの次回に書きます。


 について。
 つまりAJAXでクライアント側で画面を切り替えるとなると、クライアント側で、画面間で共通に使う変数を渡さないといけない。その渡し方。




■たしかにクッキーを使う方法はあるけど。。

 たしかに、クッキーを使う方法はある。
 document.cookieに値をセットし、受け手は、document.cookieから、とってくる
(ただし、変数=値の形で取れてしまうので、分解しないといけない)

 詳しくは
とほほのCookie入門
http://www.tohoho-web.com/wwwcook.htm

にやりかたとかが載っている。

 でも、ここで引渡しするのは、1つのXMLドキュメントとかもありえる。
 それをクッキーにいれて、さらに受け手で解析する??

 ちとめんどう




■トップ画面に変数を用意、各種画面は、トップ下のフレームで動く

 で、ちょっと技巧がかった話を1つ

 一番初めにアクセスする、index.htmが、以下のように
<html>
<SCRIPT type="text/javascript" src="abc.js"></script>
<SCRIPT Language="JavaScript">
<!--
var	val1	=	"2345";
// -->
</SCRIPT>
<head>
<title>テスト</title>
</head>

<frameset>
 <frame name="gamen" src="main.htm">
 <noframes>
  <body>

  <p>このページにはフレームが使用されていますが、
  お使いのブラウザではサポートされていません。</p>

  </body>
  </noframes>
</frameset>
</html>

(上記< > は、本当は半角)

変数宣言(val1)をして、フレームを作成する。フレーム面はgamenで
main.htmを表示している。
 で、実質、初めに表示される画面は、main.htmなのだが、ここで、
そのmain.htmで、
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>キーワード表示・選択</title>
<SCRIPT Language="JavaScript">
<!--
//*==============================================//
//*	関数:next()			   *//
//	内容:ボタンが押された		   *//
//*==============================================//
function next_win()
{
	top.val1 ="2345";
	window.open("test.htm","gamen");
}

// -->
</SCRIPT>
</head>
<body bgcolor="#FFFFCC">
<input type=button id=bt1 onClick="next_win()" value="次へ"/>
</body>
</html>

(上記< > は、本当は半角)

のように、ボタンが押されたら、next_win()にいくようにして、
next_winで、そのトップで取った変数、
top.val1 ="2345";
に値をセットするようにして、ここで、次の画面に行くとき、
_topではなく、index.htmで宣言した、実質的なトップのgamenへ行くように
表示する。そうすると、topは変わらないので、変数は保存され、test.htmで
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>キーワード表示・選択</title>
<SCRIPT Language="JavaScript">
<!--
//*==============================================//
//*	関数:next()			  *//
//	内容:ボタンが押された		  *//
//*==============================================//
function load()
{
	t = document.getElementById('tx1');
	t.value = top.val1;
}

// -->
</SCRIPT>
</head>
<body bgcolor="#FFFFCC" onLoad="load()">
<input type=text id=tx1 value=""/>
</body>
</html>

(上記< > は、本当は半角)

のように、読み込んだとき、loadにはいって、そこで、
top.val1を呼び出すと、前の画面で設定した値が来る




■このように

1.トップ画面の変数(top.変数名)に値を保存して
2.画面は、トップでなく、gamenとか名前を付けて、そこに出すようにすれば、
3.画面間で、1の変数が共用できる。

これは、初め宣言してなくても、top.変数名を直接呼んでもOKそうだ。。
ま、ちょっと変わったやり方かも(^^;)



この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 開発の初めから順番に書いて... | トップ | 企業ブログが失敗する7つの理... »
最新の画像もっと見る

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