teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

質問者の「やりたいこと」部分とリンク

2017/08/09 08:25

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -1,3 +1,5 @@
1
+ > jQueryにどう記述すればaaaとbbbだけを抜き取れるか
2
+
1
3
  PHPを見た感じJSON形式で返したいように見受けられます。
2
4
  受け取る側もJSONを指定しましょう。
3
5
 
@@ -36,6 +38,8 @@
36
38
  [json_encode()](http://php.net/manual/ja/function.json-encode.php)は第2引数でオプションを色々と指定できるので用途にあわせて調整してください。
37
39
  ※この場合だとhtmlエスケープかけられないので事前にかけた配列を作って返すなど工夫が必要です
38
40
 
41
+ > PHPにどう記述すれば返ってくるデータにhtmlとかheadとかbodyとか不要なものがくっつかなくなるか
42
+
39
43
  さらに追記:
40
44
  [$.ajax() ](http://js.studio-kingdom.com/jquery/ajax/ajax)のsetting部分を見ますと、
41
45
  datatypeについては指定されていない場合、デフォルト値をjQuery側が判別しているようなので

4

参考先URL

2017/08/09 08:25

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -44,4 +44,5 @@
44
44
  phpからの返却時にエスケープされたのかなとは思います(未検証ですが)
45
45
 
46
46
  json出力で決まっているのでしたら、header()でapplication/jsonを指定したほうが良いですね。
47
+ - 参考:[StackOverflow:PHPで値を JSON 形式で表示したい場合、 header('content-type: application/json;')は必要?](https://ja.stackoverflow.com/questions/12753/php%E3%81%A7%E5%80%A4%E3%82%92-json-%E5%BD%A2%E5%BC%8F%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%9F%E3%81%84%E5%A0%B4%E5%90%88-headercontent-type-application-json%E3%81%AF%E5%BF%85%E8%A6%81)
47
48
 

3

サンプルコード修正

2017/08/09 08:22

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -19,11 +19,11 @@
19
19
  html+= "|data_name:"+data[i].data_name;
20
20
  html+= "</li>";
21
21
  }
22
- html+="<ul>";
22
+ html+="</ul>";
23
23
  $('#container').html(html);
24
24
 
25
25
  ```
26
-
26
+ ※あくまでサンプルです。ご自身のデータの状態にあわせて調整してください
27
27
  ※php時点で[htmlspecialchars()](http://php.net/manual/ja/function.htmlspecialchars.php)はかけておいた方が良いです
28
28
 
29
29
  追記:
@@ -34,6 +34,7 @@
34
34
 
35
35
  だけでいいかもしれませんね。
36
36
  [json_encode()](http://php.net/manual/ja/function.json-encode.php)は第2引数でオプションを色々と指定できるので用途にあわせて調整してください。
37
+ ※この場合だとhtmlエスケープかけられないので事前にかけた配列を作って返すなど工夫が必要です
37
38
 
38
39
  さらに追記:
39
40
  [$.ajax() ](http://js.studio-kingdom.com/jquery/ajax/ajax)のsetting部分を見ますと、

2

修正

2017/08/09 08:19

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -7,24 +7,40 @@
7
7
  dataType: "json"
8
8
  ```
9
9
  を指定すると、配列の形式で```data```が返ってきます。
10
- 例えば、複数レコードあるとしたら
10
+ 例えば、複数レコードあるとしたら```data[0].pref_name```で、1番目のデータの```pref_name```、
11
- data[0].pref_name で、1番目のデータのpref_name と言った具合に返ってきた情報へのアクセスが可能となるはずです。
11
+ と言った具合に返ってきた情報へのアクセスが可能となるはずです。
12
- あとはforなりなんなりループして出力したい形に整形するだけですね
12
+ あとはforなりなんなりで配列```data```をループして出力したい形に整形します。
13
+ 例:
14
+ ```javascript
15
+ html="<ul>";
16
+ for(i=0;i<data.length;i++){
17
+ html+= "<li>";
18
+ html+= "pref_name:"+data[i].pref_name;
19
+ html+= "|data_name:"+data[i].data_name;
20
+ html+= "</li>";
21
+ }
22
+ html+="<ul>";
23
+ $('#container').html(html);
13
24
 
25
+ ```
26
+
27
+ ※php時点で[htmlspecialchars()](http://php.net/manual/ja/function.htmlspecialchars.php)はかけておいた方が良いです
28
+
14
29
  追記:
15
30
  php側でforeachかけなくても、
16
31
  ```PHP
17
32
  echo json_encode($data_row);
18
33
  ```
34
+
19
35
  だけでいいかもしれませんね。
20
36
  [json_encode()](http://php.net/manual/ja/function.json-encode.php)は第2引数でオプションを色々と指定できるので用途にあわせて調整してください。
21
37
 
22
-
23
38
  さらに追記:
39
+ [$.ajax() ](http://js.studio-kingdom.com/jquery/ajax/ajax)のsetting部分を見ますと、
24
40
  datatypeについては指定されていない場合、デフォルト値をjQuery側が判別しているようなので
25
- - [$.ajax() ](http://js.studio-kingdom.com/jquery/ajax/ajax)
26
41
  htmlと判別されて<html>~</html>がくっついてきたんでしょうね。
27
42
  html()を利用されているのでエスケープはjQueryでの出力時よりも
28
43
  phpからの返却時にエスケープされたのかなとは思います(未検証ですが)
29
44
 
30
- json出力決まっているのらheader()でapplication/jsonを指定したほうが良いですね。
45
+ json出力決まっているのでしたheader()でapplication/jsonを指定したほうが良いですね。
46
+

1

追記

2017/08/09 08:17

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -17,4 +17,14 @@
17
17
  echo json_encode($data_row);
18
18
  ```
19
19
  だけでいいかもしれませんね。
20
- [json_encode()](http://php.net/manual/ja/function.json-encode.php)は第2引数でオプションを色々と指定できるので用途にあわせて調整してください。
20
+ [json_encode()](http://php.net/manual/ja/function.json-encode.php)は第2引数でオプションを色々と指定できるので用途にあわせて調整してください。
21
+
22
+
23
+ さらに追記:
24
+ datatypeについては指定されていない場合、デフォルト値をjQuery側が判別しているようなので
25
+ - [$.ajax() ](http://js.studio-kingdom.com/jquery/ajax/ajax)
26
+ htmlと判別されて<html>~</html>がくっついてきたんでしょうね。
27
+ html()を利用されているのでエスケープはjQueryでの出力時よりも
28
+ phpからの返却時にエスケープされたのかなとは思います(未検証ですが)
29
+
30
+ json出力が決まっているのならheader()でapplication/jsonを指定したほうが良いですね。