質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

4131閲覧

動的に生成された要素(エレメント)を別ページに引き継ぎたい

sika

総合スコア52

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2015/01/25 08:04

ページ内で動的に生成された要素をサイト内の別ファイルにリンクした際に引継ぐ処理を行いたいのですが具体的な設計がまとまりません。

【行いたい処理の概要】
①ページアクセス時(000.html)
・000.html~003.htmlの各ファイルのページは同様のマークアップレイアウトです。

lang

1<ul> 2 <li><a href="001.html">001</a></li> 3 <li><a href="002.html">002</a></li> 4 <li><a href="003.html">003</a></li> 5</ul> 6 7<ul class="aaa"> 8 <li><img src="aaa/jpg" alt="aaa"></li> 9 <li><img src="bbb/jpg" alt="bbb"></li> 10 <li><img src="ccc/jpg" alt="ccc"></li> 11 <li><img src="ddd/jpg" alt="ddd"></li> 12</ul> 13 14<div id="cloneBox"> 15 <!--動的要素をここに生成--> 16</div>

②ページ内で動的要素を生成してページ遷移(000.html)
・リスト要素(ul.aaa)内のリスト画像をクリックすると、選択された画像をコピー要素(#cloneBox)内に生成される(クリックされた分だけ画像はコピー要素に生成される仕様です)
・ここで生成された要素エレメントを保持したまま上部メニューのいずれかのページにリンクする場合③へ

lang

1<ul> 2 <li><a href="001.html">001</a></li> <!-- ③.②後、このページにリンク --> 3 <li><a href="002.html">002</a></li> 4 <li><a href="003.html">003</a></li> 5</ul> 6 7<ul class="aaa"> 8 <li><img src="aaa/jpg" alt="aaa"></li> <!-- ①.ここをクリックした処理 --> 9 <li><img src="bbb/jpg" alt="bbb"></li> 10 <li><img src="ccc/jpg" alt="ccc"></li> 11 <li><img src="ddd/jpg" alt="ddd"></li> 12</ul> 13 14<div id="cloneBox"> 15 <img src="aaa/jpg" alt="aaa"> <!--②.①クリック処理で要素が生成される--> 16 <img src="ccc/jpg" alt="ccc"> 17 ・・・ 18</div>

③リンクページ遷移後も動的要素は保持(001.html)※ここからが質問したい処理
・000.html → 001.htmlにページ遷移した後も共通のコピー要素(#cloneBox)内には前のページ(000.html)で生成された要素画像がそのまま保持されたままページにアクセス

lang

1<ul> 2 <li><a href="000.html">000</a></li> 3 <li><a href="002.html">002</a></li> 4 <li><a href="003.html">003</a></li> 5</ul> 6 7<ul class="aaa"> 8 <li><img src="eee/jpg" alt="eee"></li> 9 <li><img src="fff/jpg" alt="fff"></li> 10 <li><img src="ggg/jpg" alt="ggg"></li> 11 <li><img src="hhh/jpg" alt="hhh"></li> 12</ul> 13 14<div id="cloneBox"> 15 <img src="aaa/jpg" alt="aaa"> <!--①.000.htmlで生成された要素は保持したまま--> 16 <img src="ccc/jpg" alt="ccc"> 17 ・・・ 18</div>

参照①、②の同じページの中で動的に要素を生成する処理は完成しているのですが、
③の様に同サイト内の別ページにリンクされた際に各ページの共通要素となるコピー要素(#cloneBox)に生成された画像(エレメント)を保持したまま各ページを遷移できる処理の設計がまとまっていません。

現在は
1.ajaxの非同期通信でphpファイルへコピー要素(#cloneBox)内のエレメントをdataとして送信
2.受信先のPHPファイルで受け取ったdataを配列として持ってから対象のページへ遷移処理
3.PHPファイルで代入された配列を遷移先ページのseccionで受け取った配列を分解して動的にコピー要素(#cloneBox)へ再生成
4.またページ内でコピー要素(#cloneBox)に追加された画像を持ったままリンクされたら①へ戻る

というイメージで処理を考えているのですが、PHPに関しては初心者ですので現実的に可能なのかも不明です。

そもそも質問する段階の次元ではないのかもしれませんが
実現可能と思われる設計、学ぶべき技術・関数・処理など
どんな事でも構いませんのでご教授いただける方、アドバイス頂ければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

考えておられる手順でほぼ実装可能です。
ただし、ページ遷移時にajaxで送るのは良くないので、その際には普通に遷移先ページのPHPで受け取る様にしたほうがいいです。
(ajaxで送ると、データ送信前にJavascript処理が止まってしまう可能性があります)

ついでに言うと、ユーザ側での改竄をある程度許容するのであれば、そのPHPへ送るdata配列をcookieに持っておくという手法も有りです。
この場合、PHP側のロジックが丸ごと不要になるので、実装は簡単になるかと思います。

ちなみにですが、cookieは同一ドメイン内では共有されますが、その「別ページ」が別ドメインになる場合には引き継がれないので注意が必要です。

以上、ご参考になれば幸いです。

投稿2015/01/25 09:50

utun

総合スコア384

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sika

2015/01/25 12:32

長文の上にわかりづらい質問へのご回答、心より感謝致します。 >ajaxで送ると、データ送信前にJavascript処理が止まってしまう可能性があります 確かにこれは悪手ですね。考えが足りませんでした。 >PHPへ送るdata配列をcookieに持っておくという手法 この仕様を実装できるように進めていきたいと思います。 ただ動的に生成した要素をajax(post)以外を用いて PHPファイルに継承する場合の具体的な手段が浮かびません。 ・コピー要素(#cloneBox)をformとして再構築 ・動的生成要素にname属性を付属させる ・リンク対象のaタグをaction属性を付ける ・・・というイメージでしょうか? 度々丸投げの様な質問になってしまい申し訳ございませんが アドバイス頂ければ幸いです。
utun

2015/01/25 13:14

大体イメージされている通りで大丈夫です。 >・コピー要素(#cloneBox)をformとして再構築 これは、送るデータを入れる専用のformを作ってください。 尚、動的に生成したformを利用する場合、適当にWebページ上のどこかにappendしておかないと、Firefox辺りで動作しないのでご注意ください。 >・動的生成要素にname属性を付属させる よくやる手法としては、 <input type="hidden" name="paramName" value="someData"/> の様なものを作るパターンです。 Webページ上にくっつける必要があるので、hiddenで作ります。 >・リンク対象のaタグをaction属性を付ける actionで起動してもいいですし、clickイベントでやる様にしてもいいです。 個人的には、他の場合と動作を統一しやすいので、href="#"とした上でclickイベントからやる形をお勧めします。 そもそもaタグを使わない方がCSSを書きやすいので、これ系のボタンは、私はいつもdivで書いちゃってます。(※但しclickイベントとかでやると、Javascriptが止まった場合押せない謎ボタンになりますが・・・。) 一応jQueryベースですが、紹介されているサイトがあったので、ご紹介します。 こちらを見た方が分かりやすいかもですw http://www.walbrix.com/jp/blog/2013-10-jquery-submit-without-form.html サンプルではmethodが指定されていないので、postを利用したい場合は適宜入れちゃってください。
sika

2015/01/25 13:57

ご返答ありがとうございます。 参照サイトとご教授いただきました方法でより具体的なイメージが付きました。 上記の方法を踏まえて改めて仕様を再設計したいと思います。 心よりお礼申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問