まず、やろうとしていることはボタンをクリックし、その中身と同じデータを持つものを
xmlから読み込み表示します。
次にそこから他のページへ移動して、戻ってきたときに最後に表示していた内容を
そのまま表示させたいのです。
crome、ieにて動作確認をさせたいです。
現状のソースです、
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>無題ドキュメント</title>
<script language="JavaScript" type="text/javascript" src="../jq/jquery-1.7.2.min.js"></script>
<script language="JavaScript" type="text/javascript" src="../jq/jquery.cookie.js"></script>
<script type="text/javascript">
$(function(){
if($.cookie("name")){
$("#newbox").html($.cookie("name"));
}
$('#buttons button').click(function(){
var val = $(this).text();
$.ajax({
url:"index.xml",
type:"get",
dataType:"xml",
timeout:1000,
cache:false,
error:function(){
alert("error");
},
success:function(xml){
var listdata="";
$(xml).find("list").each(function(){
var name=$(this).find("name").text();
//
var imgs=$(this).find("imgs").text();
//
var price=$(this).find("price").text();
//
$(this).children().each(function(){
if($(this).text()==val){
listdata+='<ul><li>'+name+'</li><li><img src="'+imgs+'" /></li><li>' +price+ '</li></ul>';}})
});
$("#newbox").html(listdata);
$.cookie("name",$("#newbox").html());
}
});
})
});
</script>
</head>
<body>
<div id="buttons">
<button>600</button><button>700</button><button>800</button><button>900</button>
</div>
<div id="newbox"></div>
</body>
--xml--------
<list>
<name>いちご</name>
<imgs>001.jpg</imgs>
<price>600</price>
</list>
<list>
<name>ぶどう</name>
<imgs>002.jpg</imgs>
<price>700</price>
</list>
<list>
<name>スイカ</name>
<imgs>003.jpg</imgs>
<price>800</price>
</list>
<list>
<name>メロン</name>
<imgs>004.jpg</imgs>
<price>900</price>
</list>
<list>
<name>りんご</name>
<imgs>005.jpg</imgs>
<price>600</price>
</list>
・・・続く
--------------
この状態だと、内容が少ない場合は表示されるのですが、内容が多くなると表示されなくなります。
基本的なことが間違っているのか、cookieの処理がおかしいのか
理由がわからず困っています。
どうかご教授お願いいたします。
No.1ベストアンサー
- 回答日時:
私は、を使ったことはないので、その部分についてのコメントはできませんが、
cookieには、最大4KBという、サイズの制限があります。
元々cookieは、それほど大きなデータを保存するためのものではないです。
この例の場合ですと、変数valに相当する値をcookieに保存しておき、ページが最表示された場合には再度XMLから読み直す方法にするのが通常の作り方かと思います。
取得するXMLの値がその時によって異なり、ページには初回表示時のデータを表示したい場合は、cookieとしての合計サイズが4KBを超える可能性のある場合はサーバ側に保存するか、HTML5依存になりますがWeb Storageを使うなどの方法になるかと思います。
参照URLに、Web Storageの解説ページ例を入れておきます。
上にも書いたように、この方法はHTML5のWeb Storageをサポートしているブラウザでのみ利用可能です。
(サポートされている具体的なブラウザは、参照URLのリンク先の記事に書かれています)
なお、提示されたコードは、かなり処理に無駄が多いと思います。
(まあ、やりたいことや、色々な前提による部分もあるかと思いますが)
質問用のサンプルコードでしたら良いですが、これでデータ量が増えてくると、結構重くなるかも。
参考URL:http://www.atmarkit.co.jp/fdotnet/chushin/introh …
ご回答ありがとうございました。
変数valのみ保存、読み直しで動作できました。
簡潔なコードにできるように勉強していきたいと思います。
Web Storage大変ためになりました、是非活用できればと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【jQuery】input nameの文字列...
-
新しくフォルダを作成したい
-
javascriptの値をformのinput h...
-
jqueryでtextareaのcols、rows...
-
JavaScriptにて動的に配列を作...
-
テキストボックスの値同士を比...
-
Javascriptでのbuttonのname属...
-
name属性のないformタグの、中...
-
ラジオボタンでクリックした値...
-
時間の比較は可能でしょうか?
-
カーソルが自動的に移動する方法
-
入力フォームに半角スペース以...
-
jQueryで属性連番処理を、複数...
-
フォーム内の同一名のエレメン...
-
return trueとreturn falseの用...
-
追加ボタンを押した際に ok ボ...
-
チェックボックスのON/OFFでVal...
-
<form action="#">の意味とは?
-
jQuery セレクトボックスで選択...
-
フォームが空欄の時にフォーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【jQuery】input nameの文字列...
-
javascriptの値をformのinput h...
-
JavaScriptにて動的に配列を作...
-
新しくフォルダを作成したい
-
二つの入力欄に、同時に同じ文...
-
Javascriptでのbuttonのname属...
-
name属性のないformタグの、中...
-
テキストボックスの入力をリセット
-
出発駅A、到着駅Bを選択すると...
-
ASP.NETでNAME属性を固定にしたい
-
submitボタン押下時にPOSTされ...
-
ラジオボタンでクリックした値...
-
テキストボックスの値同士を比...
-
jqueryでtextareaのcols、rows...
-
入力フォームに半角スペース以...
-
cookie使用時にundefinedと表示...
-
ファイル選択ダイアログが表示...
-
テキストエリアをenterキーでフ...
-
hiddenを動的に作成したい
-
ボタンを押すとテキストボック...
おすすめ情報