質問編集履歴

16

変更

2021/06/08 10:35

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,3 @@
1
- cakephp2
2
-
3
-
4
-
5
1
  1.やりたいこと
6
2
 
7
3
  select1で選択された項目を基準にその下に設置しているselect2の項目を変えたい。
@@ -28,8 +24,6 @@
28
24
 
29
25
  ```ajax
30
26
 
31
- $('#select1').on('change', function() {
32
-
33
27
  var id = $(this).val();//指定のid
34
28
 
35
29
  $.ajax({
@@ -45,8 +39,6 @@
45
39
  },
46
40
 
47
41
  dataType: 'json',
48
-
49
- }).trigger('change');
50
42
 
51
43
  ```
52
44
 
@@ -103,65 +95,3 @@
103
95
  しかし、jsで格納のやり方がわからず。
104
96
 
105
97
  教えていただけますか?
106
-
107
-
108
-
109
-
110
-
111
- -------18:10追記
112
-
113
- ご指摘いただいたparseをjs内に記述しましたがだめでした。
114
-
115
- これは$responseとしては受け取れず、responseとしてjs内でしか受け取れていないためです。
116
-
117
- 試したコードは以下です。
118
-
119
- ```
120
-
121
- const js_array = JSON.parse('<?php echo $response; ?>');
122
-
123
- ```
124
-
125
-
126
-
127
- -------18:20追記
128
-
129
- シンプルに考えました。responseは取れているので、タグとして出力すればよいと。
130
-
131
- しかしappendでは追加されていってしまう。
132
-
133
- indexをkeyとして、valueを表示させたい。配列としてphpへ出力できるか?
134
-
135
- ```ここに言語を入力
136
-
137
-
138
-
139
- $.each(response.data.hairetuList, function(index,value){
140
-
141
- $('#select2').append('<option>' + value + '</option>');
142
-
143
- })
144
-
145
- ```
146
-
147
- -------19:10追記
148
-
149
- optionのvalue値が設定されていない為でした。
150
-
151
- value値はindexにしたいが、表示はvalueにしたいため、編集。
152
-
153
- ```ここに言語を入力
154
-
155
- $.each(response.data.hairetuList, function(index,value){
156
-
157
- $('#select2').append('<option value="' + index + '">' + value + '</option>');
158
-
159
- })
160
-
161
- ```
162
-
163
- しかし、一回目にappendされたものが残っているため、後ろに追加されていってしまう。処理を初期化し、2回目以降は1回目のものを削除した状態からappendしたい。
164
-
165
-
166
-
167
- ※ご回答に対し、質問文に追記していっています。ご了承ください。

15

jsの処理を追記

2021/06/08 10:34

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -24,11 +24,11 @@
24
24
 
25
25
 
26
26
 
27
- 連想配列json_encodeし、javascriptobjとて取得きました
27
+ trigger記述たのは初期表示時点処理を実行たいため
28
-
29
- これをphpで再度変数に入っている連想配列として取得?するにはどうすればいいですか?
30
28
 
31
29
  ```ajax
30
+
31
+ $('#select1').on('change', function() {
32
32
 
33
33
  var id = $(this).val();//指定のid
34
34
 
@@ -45,6 +45,8 @@
45
45
  },
46
46
 
47
47
  dataType: 'json',
48
+
49
+ }).trigger('change');
48
50
 
49
51
  ```
50
52
 

14

追記

2021/06/08 10:23

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -146,19 +146,19 @@
146
146
 
147
147
  optionのvalue値が設定されていない為でした。
148
148
 
149
- value値はindexにしたいが、表示はvalueにしたいです
149
+ value値はindexにしたいが、表示はvalueにしたいため、編集
150
150
 
151
151
  ```ここに言語を入力
152
152
 
153
153
  $.each(response.data.hairetuList, function(index,value){
154
154
 
155
- $('#select2').append('<option value="' . index . '">' + value + '</option>');
155
+ $('#select2').append('<option value="' + index + '">' + value + '</option>');
156
156
 
157
157
  })
158
158
 
159
159
  ```
160
160
 
161
- 半強制的にこうてみましたが、だめでした...
161
+ 、一回目にappendされもの残っているため後ろに追加されていってまう。処理を初期化し、2回目以降は1回目のものを削除し状態からappendしたい
162
162
 
163
163
 
164
164
 

13

追記

2021/06/08 10:20

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -142,6 +142,24 @@
142
142
 
143
143
  ```
144
144
 
145
+ -------19:10追記
146
+
147
+ optionのvalue値が設定されていない為でした。
148
+
149
+ value値はindexにしたいが、表示はvalueにしたいです。
150
+
151
+ ```ここに言語を入力
152
+
153
+ $.each(response.data.hairetuList, function(index,value){
154
+
155
+ $('#select2').append('<option value="' . index . '">' + value + '</option>');
156
+
157
+ })
158
+
159
+ ```
160
+
161
+ 半強制的にこうしてみましたが、だめでした...。
162
+
145
163
 
146
164
 
147
165
  ※ご回答に対し、質問文に追記していっています。ご了承ください。

12

追記

2021/06/08 10:16

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -126,7 +126,9 @@
126
126
 
127
127
  シンプルに考えました。responseは取れているので、タグとして出力すればよいと。
128
128
 
129
- しかしappendでは追加されていってしまう上に、phpで取得できていないのでその後の処理に影響が出る
129
+ しかしappendでは追加されていってしまう。
130
+
131
+ indexをkeyとして、valueを表示させたい。配列としてphpへ出力できるか?
130
132
 
131
133
  ```ここに言語を入力
132
134
 

11

追記

2021/06/08 09:50

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -126,7 +126,7 @@
126
126
 
127
127
  シンプルに考えました。responseは取れているので、タグとして出力すればよいと。
128
128
 
129
- しかしappendでは追加されていってしまうので、押されたもののみ表示したい
129
+ しかしappendでは追加されていってしまう上に、phpで取得できていないので処理に影響が出る
130
130
 
131
131
  ```ここに言語を入力
132
132
 

10

追記

2021/06/08 09:37

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -126,7 +126,7 @@
126
126
 
127
127
  シンプルに考えました。responseは取れているので、タグとして出力すればよいと。
128
128
 
129
- しかしappendでは追加されていってしまう。
129
+ しかしappendでは追加されていってしまうので、押されたもののみ表示したい
130
130
 
131
131
  ```ここに言語を入力
132
132
 

9

追記

2021/06/08 09:31

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -122,4 +122,24 @@
122
122
 
123
123
 
124
124
 
125
+ -------18:20追記
126
+
125
- ※質問の仕方を改めるため途中で編集しました。ご迷惑おかけしました。今一度ご教授お願いしす。
127
+ シンプルに考えました。responseは取れてるので、タグとて出力ればよいと
128
+
129
+ しかしappendでは追加されていってしまう。
130
+
131
+ ```ここに言語を入力
132
+
133
+
134
+
135
+ $.each(response.data.hairetuList, function(index,value){
136
+
137
+ $('#select2').append('<option>' + value + '</option>');
138
+
139
+ })
140
+
141
+ ```
142
+
143
+
144
+
145
+ ※ご回答に対し、質問文に追記していっています。ご了承ください。

8

追記

2021/06/08 09:25

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -106,4 +106,20 @@
106
106
 
107
107
 
108
108
 
109
+ -------18:10追記
110
+
111
+ ご指摘いただいたparseをjs内に記述しましたがだめでした。
112
+
113
+ これは$responseとしては受け取れず、responseとしてjs内でしか受け取れていないためです。
114
+
115
+ 試したコードは以下です。
116
+
117
+ ```
118
+
119
+ const js_array = JSON.parse('<?php echo $response; ?>');
120
+
121
+ ```
122
+
123
+
124
+
109
125
  ※質問の仕方を改めるため途中で編集しました。ご迷惑おかけしました。今一度ご教授お願いします。

7

,

2021/06/08 09:14

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
 
22
22
 
23
- この1と2の流れを下記に記載します。
23
+ この2の流れを下記に記載します。
24
24
 
25
25
 
26
26
 

6

質問文を編集

2021/06/08 09:06

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,26 @@
1
1
  cakephp2
2
+
3
+
4
+
5
+ 1.やりたいこと
6
+
7
+ select1で選択された項目を基準にその下に設置しているselect2の項目を変えたい。
8
+
9
+ 2.そのために
10
+
11
+ select1で選択された項目をjsで取得、jsonとしてcontrollerへ投げ、そのidを基準にselect2用のデータをDBから取得、$responseに格納しechoで戻す。
12
+
13
+ 3.それを(本件の問題点)
14
+
15
+ jsで取得 or phpで取得し、select2のデータを表示させる。
16
+
17
+
18
+
19
+ です。
20
+
21
+
22
+
23
+ この1と2の流れを下記に記載します。
2
24
 
3
25
 
4
26
 
@@ -60,7 +82,7 @@
60
82
 
61
83
 
62
84
 
63
-
85
+ ここが3となります。
64
86
 
65
87
  decodeというのを試しましたが、$arrayをphpでダンプしてもnullがかえってきます。
66
88
 
@@ -69,3 +91,19 @@
69
91
  <?php $array = json_decode($response['data']['hairetuList']); ?>
70
92
 
71
93
  ```
94
+
95
+ しかし、上でも書いた通りjsでconsole.logにて表示させた場合、objとして取得できていました。
96
+
97
+
98
+
99
+ jsで変数に格納し、それをphpで表示させればやりたいことができる想定です。
100
+
101
+ しかし、jsで格納のやり方がわからず。
102
+
103
+ 教えていただけますか?
104
+
105
+
106
+
107
+
108
+
109
+ ※質問の仕方を改めるため途中で編集しました。ご迷惑おかけしました。今一度ご教授お願いします。

5

cakeを使っていることを明示

2021/06/08 08:59

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,7 @@
1
+ cakephp2
2
+
3
+
4
+
1
5
  連想配列をjson_encodeし、javascriptの中でobjとして取得できました。
2
6
 
3
7
  これをphpで再度変数に入っている連想配列として取得?するにはどうすればいいですか?
@@ -10,7 +14,7 @@
10
14
 
11
15
  type: 'GET',
12
16
 
13
- url: '対象url',
17
+ url: '対象actionへ渡す(ajax_id)',
14
18
 
15
19
  data: {
16
20
 
@@ -22,9 +26,11 @@
22
26
 
23
27
  ```
24
28
 
25
-
29
+  これをcontrollerに渡し、encodeします。
26
30
 
27
- ```encode
31
+ ```
32
+
33
+ public function ajax_id {
28
34
 
29
35
  $data = array();
30
36
 
@@ -48,6 +54,8 @@
48
54
 
49
55
  echo json_encode($response);
50
56
 
57
+ }
58
+
51
59
  ```
52
60
 
53
61
 

4

.

2021/06/08 02:32

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
 
26
26
 
27
- ```取得 → encode(controller)
27
+ ```encode
28
28
 
29
29
  $data = array();
30
30
 

3

質問文を編集

2021/06/08 02:23

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,49 @@
2
2
 
3
3
  これをphpで再度変数に入っている連想配列として取得?するにはどうすればいいですか?
4
4
 
5
- ```encode
5
+ ```ajax
6
+
7
+ var id = $(this).val();//指定のid
8
+
9
+ $.ajax({
10
+
11
+ type: 'GET',
12
+
13
+ url: '対象url',
14
+
15
+ data: {
16
+
17
+ idd: id,
18
+
19
+ },
20
+
21
+ dataType: 'json',
22
+
23
+ ```
24
+
25
+
26
+
27
+ ```取得 → encode(controller)
28
+
29
+ $data = array();
30
+
31
+ $response = array(
32
+
33
+ 'data' => array()
34
+
35
+ );
36
+
37
+ $id = $this->request->query['id'];
38
+
39
+
40
+
41
+ //$idを基準にfindでデータ取得(連想配列)
42
+
43
+
44
+
45
+ $response['data']['hairetuList'] = $hairetuList;
46
+
47
+ }
6
48
 
7
49
  echo json_encode($response);
8
50
 
@@ -10,18 +52,12 @@
10
52
 
11
53
 
12
54
 
55
+
56
+
13
57
  decodeというのを試しましたが、$arrayをphpでダンプしてもnullがかえってきます。
14
58
 
15
- ```js
59
+ ```php
16
60
 
17
- $array = json_decode(response.data.rensouList);
61
+ <?php $array = json_decode($response['data']['hairetuList']); ?>
18
62
 
19
63
  ```
20
-
21
- phpでも試してみましたが、だめでした。
22
-
23
- ```ここに言語を入力
24
-
25
- <?php $array = json_decode($response); ?>
26
-
27
- ```

2

追記

2021/06/08 02:21

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,12 @@
1
1
  連想配列をjson_encodeし、javascriptの中でobjとして取得できました。
2
2
 
3
3
  これをphpで再度変数に入っている連想配列として取得?するにはどうすればいいですか?
4
+
5
+ ```encode
6
+
7
+ echo json_encode($response);
8
+
9
+ ```
4
10
 
5
11
 
6
12
 
@@ -11,3 +17,11 @@
11
17
  $array = json_decode(response.data.rensouList);
12
18
 
13
19
  ```
20
+
21
+ phpでも試してみましたが、だめでした。
22
+
23
+ ```ここに言語を入力
24
+
25
+ <?php $array = json_decode($response); ?>
26
+
27
+ ```

1

変更

2021/06/08 02:03

投稿

momolength
momolength

スコア62

test CHANGED
File without changes
test CHANGED
@@ -8,6 +8,6 @@
8
8
 
9
9
  ```js
10
10
 
11
- $array = json_decode($response.data.rensouList);
11
+ $array = json_decode(response.data.rensouList);
12
12
 
13
13
  ```