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

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

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

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

2回答

439閲覧

ajaxで選択されたものに紐付いた値を表示させたい。

tarao

総合スコア28

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2017/08/04 06:39

製品を登録できる管理画面を作っています。
カテゴリーを選び、その選択されたカテゴリーに紐付いたスペック一覧を表示させたいと思っています。
カテゴリーはメイン・大・中・小とあり、プルダウンで親カテを選択するごとに、小カテが表示されます。
スペックは中、小カテに紐付いていて、スペックを持つカテゴリーを選択したらスペック一覧を出したいのですが、うまくいかないのでご教示お願いします。

javascript

1 //中カテ 2 $(".regist_product_cat03").on("change",function(event){ 3 event.preventDefault(); 4 var registconfBtn= $(".regist_product_cat03"); 5 var registBtn = registconfBtn.val(); 6 7 $.ajax({ 8 url:"/products/admins/regist", 9 data:{ 10 cat:registBtn 11 }, 12 dataType:"json", 13 type:"post", 14 }).done(function(data){ 15 $('.regist_product_cat04 option').remove();//小カテの値消す 16 $(".regist_product_cat04").css({"display" : "block"}); 17 18 var result = data.result;//カテゴリ 19 var spec = data.spec;//スペック 20 //カテゴリが存在したら次のプルダウン表示 21 if(result!==""){ 22 $.each(result, function(id, result){ 23 $('.regist_product_cat04').append($('<option>').text(result[1]).attr('value', result[0])); 24 }); 25 } 26 //カテゴリに紐付いたスペックが存在したら一覧表示 27 if(spec!==""){ 28 var spectable = "<table>"; 29 spectable += "<caption>スペック一覧</caption>"; 30 spectable += "<tbody>"; 31 spectable += "<tr><td>スペック名</td><td>スペック値</td><td></td></tr>"; 32 $.each(spec, function(id, spec){ 33 spectable += "<tr><td>"+spec[1]+"</td>"; 34 spectable += "<td><input type='text' name='specname'></td></tr>"; 35 spectable += "<td><input type='hidden' name='specid' value="+spec[0]+"></td></tr>"; 36 }); 37 spectable += "</tbody>"; 38 spectable +="</table>"; 39 } 40 41 var mesArea = $(".spec_area"); 42 mesArea.append(mesArea); 43 val = txtArea.val(""); 44 45 }).fail(function(data){ 46 alert("NG..."); 47 });//$.ajax 48 49 });

php

1if($this->request->is("ajax")){ 2 3 $cat=$this->request->data["cat"];//カテゴリ選択 4 5 //選択されたカテゴリに紐付くカテゴリ呼び出し 6 $category=$categories->find() 7 ->select(['id','name']) 8 ->where(['parent'=>$cat]) 9 ->order(['id'=>'ASC']) 10 ->contain('specs'); 11 foreach($category as $catgory_value){ 12 $spec=$catgory_value['specs'];//スペック 13 $sub_cate_id=$catgory_value->id;//カテゴリid 14 $sub_category=$catgory_value->name;//カテゴリname 15 $subcate[]=array($sub_cate_id,$sub_category); 16 } 17 foreach($spec as $cat_specs){ 18 $c_specs_name=$cat_specs->name; 19 $c_specs_id=$cat_specs->id; 20 $c_specs_info[]=array($c_specs_id,$c_specs_name); 21 } 22 23 //viewに返す 24 $this->set(["result"=>$subcate]); 25 $this->set(["spec"=>$c_specs_info]); 26 27 28 }

スペック一覧はjsのdataで受け取れているのですが、それを表示することができません。
よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

なんとも言えませんがspecのデータ型の問題のような気もしますが
とりあえずspectable変数は代入だけされて参照されていないような・・・

投稿2017/08/04 07:09

yambejp

総合スコア114572

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

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

tarao

2017/08/04 19:13

返事が遅くなってしまい申し訳ありません。 ご指摘の通り、spectable変数参照されていませんでした。。。 どうもありがとうございました!
guest

0

ベストアンサー

スペック一覧データをspectableにタグの文字列として構築されてますけど、このspectableがどこにも使われてませんね。

spectable +="</table>"; $(".spec_area").append(spectable);

としたかったのではありませんか?

投稿2017/08/04 07:09

zohnam

総合スコア1441

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

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

tarao

2017/08/04 19:10

返信が遅くなってしまい、申し訳ありません。 回答、ありがとうございます。 教えていただいたもので、表示することができました! なんだかトンチンカンな事をしていました。 すいません。助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問