回答編集履歴

6

修正

2016/12/07 11:51

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- test.phpの中身どうなっているか知りせんのであえずtest.php以下のコードとさせていただきます。
1
+ test.phpが追記されしたが結果をわかやすくするためにtest.phpの内容は以下のコードとさせていただきます。
2
2
 
3
3
  ```PHP
4
4
 
@@ -22,7 +22,11 @@
22
22
 
23
23
  ```
24
24
 
25
+ 本題
26
+
27
+ ---
28
+
25
- 質問者さんのコードに間違ってるところがあったので修正も行いました修正した箇所にはコメントを入れました。
29
+ まず下のコードをごらんください。
26
30
 
27
31
  ```javascript
28
32
 
@@ -30,7 +34,9 @@
30
34
 
31
35
  ```
32
36
 
37
+ これを質問者さんはチェックボックスの値すべてを取り出す目的で書いたものだと思われます。
38
+
33
- というようなコードだと、**一番上のname[]の値しか取り出されない**ので、[map](http://semooh.jp/jquery/api/utilities/jQuery.map/array,+callback/)でname[]中身を全部とりだしてあげる必要があります。そうすると、この部分はこのようにかけます。
39
+ しかし、このようなコードだと、**一番上のname[]の値しか取り出されない**ので、[map](http://semooh.jp/jquery/api/utilities/jQuery.map/array,+callback/)でチェックボックスを全部とりだしてあげる必要があります。そうすると、この部分はこのようにかけます。
34
40
 
35
41
  ```javascript
36
42
 
@@ -47,6 +53,8 @@
47
53
  ```
48
54
 
49
55
  つまり、コード全体は以下のようになります。
56
+
57
+ 質問者さんのコードに間違っているところがあったので修正も行いました。修正した箇所にはコメントを入れました。
50
58
 
51
59
  ```HTML
52
60
 

5

修正

2016/12/07 11:51

投稿

退会済みユーザー
test CHANGED
@@ -94,7 +94,7 @@
94
94
 
95
95
  }
96
96
 
97
- $.post('q1.php', {
97
+ $.post('test.php', {
98
98
 
99
99
  'city[]': $("input[name='name[]']").map(
100
100
 

4

追記

2016/12/07 11:48

投稿

退会済みユーザー
test CHANGED
@@ -24,7 +24,13 @@
24
24
 
25
25
  質問者さんのコードに間違っているところがあったので修正も行いました。修正した箇所にはコメントを入れました。
26
26
 
27
+ ```javascript
28
+
29
+ $('input[name="name[]"]').val()
30
+
31
+ ```
32
+
27
- $('input[name="name[]"]').val()というようなコードだと、**一番上のname[]の値しか取り出されない**ので、mapとかでname[]の中身を全部とりだしてあげる必要があります。そうすると、この部分はこのようにかけます。
33
+ というようなコードだと、**一番上のname[]の値しか取り出されない**ので、[map](http://semooh.jp/jquery/api/utilities/jQuery.map/array,+callback/)でname[]の中身を全部とりだしてあげる必要があります。そうすると、この部分はこのようにかけます。
28
34
 
29
35
  ```javascript
30
36
 
@@ -106,27 +112,11 @@
106
112
 
107
113
  }
108
114
 
109
- )
115
+ );
110
-
111
- ;
112
116
 
113
117
  });
114
118
 
115
119
  });
116
-
117
- </script>
118
-
119
- <script>
120
-
121
- $("input[name='name[]']").map(
122
-
123
- function () {
124
-
125
- return $(this).val();
126
-
127
- }
128
-
129
- ).get();
130
120
 
131
121
  </script>
132
122
 

3

追記を受けて内容変更

2016/12/07 11:42

投稿

退会済みユーザー
test CHANGED
@@ -22,11 +22,25 @@
22
22
 
23
23
  ```
24
24
 
25
- また、city[]というのがどこにもないので、name[]としますと以下のように書くことができます。
26
-
27
25
  質問者さんのコードに間違っているところがあったので修正も行いました。修正した箇所にはコメントを入れました。
28
26
 
29
- あらかじめnamesという配列を用意ておき、チェックボックスがすべてチェックされきのみにチェックボックスの値をnamesに代入して、それpostしてます。
27
+ $('input[name="name[]"]').val()というようなコードだと、**一番上のname[]の値か取り出されない**ので、mapかでname[]の中身全部とりだしてあげる必要があります。そうすると、この部分はこのようにかけます。
28
+
29
+ ```javascript
30
+
31
+ $("input[name='name[]']").map(
32
+
33
+ function () {
34
+
35
+ return $(this).val();
36
+
37
+ }
38
+
39
+ ).get();
40
+
41
+ ```
42
+
43
+ つまり、コード全体は以下のようになります。
30
44
 
31
45
  ```HTML
32
46
 
@@ -64,27 +78,9 @@
64
78
 
65
79
  $('#all').change(function () {
66
80
 
67
- var names = [];
68
-
69
81
  if ($(this).prop('checked')) {
70
82
 
71
83
  $('input[name="name[]"]').prop('checked', true);
72
-
73
- $("[name='name[]']:checked").each(function () {
74
-
75
- names.push(this.value);
76
-
77
- });
78
-
79
- $.post('test.php', {
80
-
81
- 'city[]': names//ここのcity[]はシングルクォートもしくはダブルクォートで囲まないといけません。
82
-
83
- }, function (rs) {
84
-
85
- $("#rightSide").html($('#rightSide', rs).html());
86
-
87
- });
88
84
 
89
85
  } else {
90
86
 
@@ -92,9 +88,45 @@
92
88
 
93
89
  }
94
90
 
91
+ $.post('q1.php', {
92
+
93
+ 'city[]': $("input[name='name[]']").map(
94
+
95
+ function () {
96
+
97
+ return $(this).val();
98
+
99
+ }).get()
100
+
101
+ },
102
+
103
+ function (rs) {
104
+
105
+ $("#rightSide").html($('#rightSide', rs).html());
106
+
107
+ }
108
+
109
+ )
110
+
111
+ ;
112
+
95
113
  });
96
114
 
97
115
  });
116
+
117
+ </script>
118
+
119
+ <script>
120
+
121
+ $("input[name='name[]']").map(
122
+
123
+ function () {
124
+
125
+ return $(this).val();
126
+
127
+ }
128
+
129
+ ).get();
98
130
 
99
131
  </script>
100
132
 

2

修正

2016/12/07 11:39

投稿

退会済みユーザー
test CHANGED
@@ -23,6 +23,10 @@
23
23
  ```
24
24
 
25
25
  また、city[]というのがどこにもないので、name[]としますと以下のように書くことができます。
26
+
27
+ 質問者さんのコードに間違っているところがあったので修正も行いました。修正した箇所にはコメントを入れました。
28
+
29
+ あらかじめnamesという配列を用意しておき、チェックボックスがすべてチェックされたときのみにチェックボックスの値をnamesに代入して、それをpostしています。
26
30
 
27
31
  ```HTML
28
32
 
@@ -72,9 +76,9 @@
72
76
 
73
77
  });
74
78
 
75
- $.post('q1.php', {
79
+ $.post('test.php', {
76
80
 
77
- 'city[]': names
81
+ 'city[]': names//ここのcity[]はシングルクォートもしくはダブルクォートで囲まないといけません。
78
82
 
79
83
  }, function (rs) {
80
84
 

1

修正

2016/12/07 10:59

投稿

退会済みユーザー
test CHANGED
@@ -4,17 +4,15 @@
4
4
 
5
5
  <?php
6
6
 
7
- if (isset($_POST['name'])) {
7
+ if (isset($_POST['city'])) {
8
8
 
9
- foreach ($_POST['name'] as $name) {
9
+ if (is_array($_POST['city'])) {
10
10
 
11
- $str = $name . " : ";
11
+ $name = implode(":", $_POST["city"]);
12
-
13
- echo $str;
14
12
 
15
13
  $fp = fopen('test.txt', 'a');
16
14
 
17
- fwrite($fp, $str);
15
+ fwrite($fp, $name);
18
16
 
19
17
  fclose($fp);
20
18
 
@@ -74,9 +72,9 @@
74
72
 
75
73
  });
76
74
 
77
- $.post('test.php', {
75
+ $.post('q1.php', {
78
76
 
79
- 'name': names
77
+ 'city[]': names
80
78
 
81
79
  }, function (rs) {
82
80
 
@@ -100,4 +98,6 @@
100
98
 
101
99
  </html>
102
100
 
101
+
102
+
103
103
  ```