回答編集履歴

7

ソースコードを先に

2019/02/22 10:20

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -1,14 +1,4 @@
1
1
  これが原因です。ヘッダ情報を宣言する前に、値を返したらエラーになりますよ。
2
-
3
- [header](http://php.net/manual/ja/function.header.php)
4
-
5
-
6
-
7
- header()関数の前に、何かしら出力させる関数を利用すると、header()関数が機能しなくなり、この時点でPHPプログラムがjsonを認識しなくなります。その状態でjson_encode()を実行しても、jsonにはなりません。
8
-
9
-
10
-
11
- また、javascriptでdataTypeをjsonと指定していると、jsonしか値を受け取れないので、jsonじゃない値が返ってきた場合、レスポンスエラーを表示させます。
12
2
 
13
3
 
14
4
 
@@ -32,6 +22,22 @@
32
22
 
33
23
 
34
24
 
25
+ [header](http://php.net/manual/ja/function.header.php)
26
+
27
+
28
+
29
+ header()関数の前に、何かしら出力させる関数を利用すると、header()関数が機能しなくなり、この時点でPHPプログラムがjsonを認識しなくなります。その状態でjson_encode()を実行しても、jsonにはなりません。
30
+
31
+
32
+
33
+ また、javascriptでdataTypeをjsonと指定していると、jsonしか値を受け取れないので、jsonじゃない値が返ってきた場合、レスポンスエラーを表示させます。
34
+
35
+
36
+
37
+
38
+
39
+
40
+
35
41
  試すならば、
36
42
 
37
43
  0. ヘッダを先頭に持ってきてecho json_encode($hoge)とする。

6

説明の要約

2019/02/22 10:20

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -1,4 +1,14 @@
1
1
  これが原因です。ヘッダ情報を宣言する前に、値を返したらエラーになりますよ。
2
+
3
+ [header](http://php.net/manual/ja/function.header.php)
4
+
5
+
6
+
7
+ header()関数の前に、何かしら出力させる関数を利用すると、header()関数が機能しなくなり、この時点でPHPプログラムがjsonを認識しなくなります。その状態でjson_encode()を実行しても、jsonにはなりません。
8
+
9
+
10
+
11
+ また、javascriptでdataTypeをjsonと指定していると、jsonしか値を受け取れないので、jsonじゃない値が返ってきた場合、レスポンスエラーを表示させます。
2
12
 
3
13
 
4
14
 
@@ -26,7 +36,7 @@
26
36
 
27
37
  0. ヘッダを先頭に持ってきてecho json_encode($hoge)とする。
28
38
 
29
- 0. ヘッダ情報をコメントアウトする。
39
+ 0. scirptのdataTypeのjsonをコメントアウトし、かつヘッダ情報をコメントアウトする。
30
40
 
31
41
 
32
42
 

5

修正

2019/02/22 10:04

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  試すならば、
26
26
 
27
- 0. 番号リストヘッダを先頭に持ってきてecho json_encode($hoge)とする。
27
+ 0. ヘッダを先頭に持ってきてecho json_encode($hoge)とする。
28
28
 
29
29
  0. ヘッダ情報をコメントアウトする。
30
30
 

4

フォロー

2019/02/22 09:37

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- var_dump($hoge);//ヘッダの前にajaxの値を返したらダメ
9
+ var_dump($hoge);//ヘッダの前に値を返したらダメ
10
10
 
11
11
  header("Content-Type: application/json; charset=UTF-8"); //ヘッダで宣言してから値を返す
12
12
 
@@ -19,3 +19,15 @@
19
19
 
20
20
 
21
21
  ```
22
+
23
+
24
+
25
+ 試すならば、
26
+
27
+ 0. 番号リストヘッダを先頭に持ってきてecho json_encode($hoge)とする。
28
+
29
+ 0. ヘッダ情報をコメントアウトする。
30
+
31
+
32
+
33
+ いずれかを試してください。

3

修正

2019/02/22 09:36

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -4,11 +4,11 @@
4
4
 
5
5
  ```PHP
6
6
 
7
- header("Content-Type: application/json; charset=UTF-8"); //ヘッダで宣言しないとjsonを認識せず
7
+
8
8
 
9
+ var_dump($hoge);//ヘッダの前にajaxの値を返したらダメ
9
10
 
10
-
11
- var_dump($hoge);//値を返す前に、ajaxの値を返したらダメ
11
+ header("Content-Type: application/json; charset=UTF-8"); //ヘッダで宣言てから値を返す
12
12
 
13
13
 
14
14
 

2

簡潔化

2019/02/22 09:33

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -1,14 +1,4 @@
1
- jQueryの方にdataType: jsonって指定してる場合はPHPはjson形式でないと返りません。
2
-
3
-
4
-
5
- そしてjsonを使った場合のAjaxのコールの仕方が根本的に間違っています。
6
-
7
- Ajaxを使った場合はヘッダ情報が必須でこれをしないとPHPファイルがjsonを認識しせん
1
+ これが原因です。ヘッダ情報を宣言する前にたらエラーにすよ
8
-
9
-
10
-
11
- それから、echo json_encode();で値を返す前に、var_dump()やechoなどで値を返してもエラーが返ってくるだけです。もし、試したいならば echo json_encode(1);としてください。そして、その場合は念のため、実際に返したいechoはコメントアウトしてください。
12
2
 
13
3
 
14
4
 

1

書き足し

2019/02/22 09:32

投稿

FKM
FKM

スコア3640

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  ```PHP
16
16
 
17
- header("Content-Type: application/json; charset=UTF-8"); //ヘッダで宣言しない
17
+ header("Content-Type: application/json; charset=UTF-8"); //ヘッダで宣言しないとjsonを認識せず
18
18
 
19
19
 
20
20