• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:クッキーによる複数のデータ取得)

クッキーによる複数のデータ取得方法

このQ&Aのポイント
  • クッキーを使用して複数のデータを取得する方法について解説します。
  • 質問者の要望に合わせて、異なるデータを複数のテキストエリアに読み込む方法をご紹介します。
  • スクリプトを使用してクッキーにデータを保存し、必要なタイミングでデータを読み込むことができます。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.7

とりあえず、クライアントサイドで動かすという前提で、 #4の補足のcookie.jsを使ってサンプルを作ってみました。 save.html ------------------切取線------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS"> <title>Save Cookie Sample</title> <script language="javascript" src="cookie.js"></script> <script type="text/javascript"> <!-- function save(){ var name="PersonalData"; var data; with(document.FORM){ data=NAME.value + "," + URL.value + "," + MAIL.value; } saveCookie(name, data,1); //有効期限1days return true; } //--> </script> </head> <body> <form name="FORM" action="load.html" onsubmit="save()" style="font-family:'MSゴシック','Courier New"> <label for="NAME">NAME:</label><input type="text" name="NAME" value="" size="20"></br> <label for="URL">&nbsp;URL:</label><input type="text" name="URL" value="" size="20"></br> <label for="MAIL">MAIL:</label><input type="text" name="MAIL" value="" size="20"></br> <input type="submit" name="SAVE" value="記憶"> </form> </body> </html> load.html ------------------切取線------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS"> <title>Load Cookie Sample</title> <script language="javascript" src="cookie.js"></script> <script type="text/javascript"> <!-- function load(){ var name="PersonalData"; var data=loadCookie(name); var dataArray=data.split(","); with (document.FORM){ NAME.value = dataArray[0]; URL.value = dataArray[1]; MAIL.value = dataArray[2]; } } //--> </script> </head> <body onload="load()"> <form name="FORM" style="font-family:'MSゴシック','Courier New" size="20"> <label for="NAME">NAME:</label><input type="text" name="NAME" value="" size="20"></br> <label for="URL">&nbsp;URL:</label><input type="text" name="URL" value="" size="20"></br> <label for="MAIL">MAIL:</label><input type="text" name="MAIL" value="" size="20"></br> </form> </body> </html>

ice_crystal
質問者

お礼

返事が遅れました。 すっごいためになるサンプルをありがとうございました。私なんかのために時間を割いてくれて… コレくらいのサンプルがあればかなり分かってきますね。ありがとうございました。 あとデータベースのカテのその他でも書きましたが、ブラウザ上にデータベースのデータを表示させるのにはどうしたらいいのでしょうか? JDBCドライバタイプ1で、DBはMySQLです。 もしよろしければ、回答はそちらのカテにしていただけるとうれしいです。

その他の回答 (6)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.6

>部分にクッキーの保存をやるようにするといんですよね? そうです。取り出したクッキーの内容(カンマで区切られた(複数を意味する)データ)です。 <input type="text">に名前を付けてやって、valueで値をセットすることができますが、 >いえ、作りたいものはJSPです。ってかASPって何?ですよ(笑 JSP(JAVA SERVER PAGE)だったら、根本的に話が違ってくる(JAVASCRIPTじゃないのじゃ?)と思います。やはり、クッキーの取り出しは、requestから取り出すのではないかと思います。 JSP自体、私は、知らないので、どういうAPIが使えるのかはわかりませんので確かではないですが。 というわけで、JSPは、わかりませんので退散いたします。

ice_crystal
質問者

補足

HTML内にJAVASCRIPTを埋め込んで動的に表示させるのをJSPっていうんじゃないですか?違うのですか? ASPを調べてみましたが、私が今まで作っているのとなんら変わるところはありませんでしたね。 今までの解説はJAVASCRIPTなのでしょう?あなたの解説でかなり助かっていますので、今後も助言をお願いします。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

#4>私が本当に作りたいものを #4の補足を見ると、もしかして、ASP(ASP.NET)ですか? ASPだったら、クッキーってrequestから取れますよってか、そっちから取らないといけないような気がしますが、どうなのでしょう? javascriptで、ブラウザに書き込みするには、 document.write("data"+i+":"+data[i]+"<BR>"); みたいな感じでいいですけど、 もともと、テキストエリア(<input type="text">のこと?、<textarea>でなくて?)に書き込みしたかったんですよね? そこら辺をちょっと補足して貰えないでしょうか?

ice_crystal
質問者

補足

いえ、作りたいものはJSPです。ってかASPって何?ですよ(笑 <input type="text">を考えていましたが、それはクッキーを使うにはそっちの方が分かりやすいかな、と思ったからで、実際クッキーの保存取り出しできるなら<input type>はどうでもいいです。 クッキーの保存取り出しのデータは<textarea>にするほど長くないので普通の<text>を使っていたんです。 回答No.4の例でいくと var multData ="BLUEPIXY,MALE,SINGLE"; var data =multData.split(","); var i; for(var i=0; i < data.length;i++){ document.write("data"+i+":"+data[i]+"<BR>"); } のようにするといいんですよね? そんで var multData ="BLUEPIXY,MALE,SINGLE"; 部分にクッキーの保存をやるようにするといんですよね?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

#3>それは、クッキーでのサンプルを探しても見つかりませんよね~。 >splitで切り分ける 例えば、こんな感じです var multData ="BLUEPIXY,MALE,SINGLE"; var data =multData.split(","); var i; for(var i=0; i < data.length;i++){ alert(data[i]); }

ice_crystal
質問者

お礼

例をいただいてありがとうございます。 ↑を実行してみました。あのような動きになるのですね。 もしよろしければ、↑をalertで出力するのではなくて、実際にブラウザ上に表示するようにしていただけないでしょうか? data1:~ data2:~ data3:~ みたいな感じで。 私が本当に作りたいものを、それを参考にして作っていきたいと思います。 よろしくお願いします。

ice_crystal
質問者

補足

http://www.fromdfj.net/javascript/function/cookie_func.html にある、saveCookie()やloadCookie()を使ってみたけど、 <% saveCookie("Age","request.getParameter("Q11-a")",7); var hoge; hoge=loadCookie("Age"); %> ~~ <body> ~~ <%=hoge%> ~~ </body> こういう使い方であってるんだろうか…

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>一つのクッキー名につき一つのみの読み出しばかりでした。 >私が悩んでいるのは、一つのクッキー名で複数のデータの読み出しがしたいのです。 ええっ? よく意味がわからないんですが、 複数のデータなら2つ以上のクッキー名なのではないですか? 例えば、 saveData("name","BLUEPIXY"); saveData("sex","MALE"); とか、別々に、名前を付けて保存すれば良いだけのことだと思いますが。 もし、本当に1つの名前で複数のデータが保存したいなら saveData("PersonalData","BLUEPIXY,MALE"); のように例えばカンマ区切りで保存をして splitで切り分けることでできます。

ice_crystal
質問者

お礼

はい、私が知りたかったのは >もし、本当に1つの名前で複数のデータが保存したいなら saveData("PersonalData","BLUEPIXY,MALE"); のように例えばカンマ区切りで保存をして splitで切り分けることでできます。 のことだったのです。 ↑のようなサンプルはどこ探してもあまり見当たらなかったです。 どこか↑を使ったサンプル紹介しているところ、ご存知ありませんか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>みたいな感じにすればいいんですよね? いいと思いますよ。 ただ、seveの方は特別値を返す必要はないかと思います。 >↑とは別に >document.cookie=("~") >も使うんですよね? 関数で、セットとゲットができたら、document.cookieは関数内部で使って、別には直接扱う必要はないと思います。 あと、key指定して、削除(有効期限を過去にする、値を""に)するような関数もあれば便利かと思います。 あと、蛇足ですが、クッキーを保存&取り出すようなサンプルは、探せば結構あるんではないかと思いますよ。自分で作るのが不安だったらそういうものを探して参考にしてみるといいかもしれません。 例えば、ライブドアのブログの個別記事のソースには、クッキーの保存&取り出し&削除しているコードがあります(そのまま転用したらまずいと思いますが) 私自身自前で作ったヤツもありますけど、あんまり、お見せするようなものではないです。

ice_crystal
質問者

お礼

またまた親切な回答、ありがとうございます。 >クッキーを保存&取り出すようなサンプルは、探せば結構あるんではないかと思いますよ。自分で作るのが不安だったらそういうものを探して参考にしてみるといいかもしれません。 はい、確かに探してみると参考になるものはありました。でもそれは一つのクッキー名につき一つのみの読み出しばかりでした。 私が悩んでいるのは、一つのクッキー名で複数のデータの読み出しがしたいのです。 >私自身自前で作ったヤツもありますけど、あんまり、お見せするようなものではないです。 もしよろしければ見せていただけないでしょうか?少なくとも私の作ったものよりはいいものでしょうし、いろいろなものもみてみたいです。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

質問文で書かれている方法は、Ageという名前のクッキーの保存取り出しですよね。 それぞれ、変数で受け取れるように変更すればいいです。 saveData(key, theValue) loadData(key) のようなインターフェースにして、 今Ageが埋め込まれている部分を変数で置き換える様にすればいいと思います。

ice_crystal
質問者

お礼

返事が遅れました。 お答えいただいてありがとうございます。 ということは int x=saveData(key, theValue); String y=loadData(key); みたいな感じにすればいいんですよね?(初歩的な質問ですみません…) ↑とは別に document.cookie=("~") も使うんですよね?

関連するQ&A