前に書いた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そうだ。。
ま、ちょっと変わったやり方かも(^^;)