回答編集履歴
7
ソースコードを先に
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
説明の要約
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
修正
test
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
試すならば、
|
26
26
|
|
27
|
-
0.
|
27
|
+
0. ヘッダを先頭に持ってきてecho json_encode($hoge)とする。
|
28
28
|
|
29
29
|
0. ヘッダ情報をコメントアウトする。
|
30
30
|
|
4
フォロー
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
var_dump($hoge);//ヘッダの前に
|
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
修正
test
CHANGED
@@ -4,11 +4,11 @@
|
|
4
4
|
|
5
5
|
```PHP
|
6
6
|
|
7
|
-
|
7
|
+
|
8
8
|
|
9
|
+
var_dump($hoge);//ヘッダの前にajaxの値を返したらダメ
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
header("Content-Type: application/json; charset=UTF-8"); //ヘッダで宣言してから値を返す
|
12
12
|
|
13
13
|
|
14
14
|
|
2
簡潔化
test
CHANGED
@@ -1,14 +1,4 @@
|
|
1
|
-
jQueryの方にdataType: jsonって指定してる場合はPHPはjson形式でないと返りません。
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
そしてjsonを使った場合のAjaxのコールの仕方が根本的に間違っています。
|
6
|
-
|
7
|
-
|
1
|
+
これが原因です。ヘッダ情報を宣言する前に、値を返したらエラーになりますよ。
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
それから、echo json_encode();で値を返す前に、var_dump()やechoなどで値を返してもエラーが返ってくるだけです。もし、試したいならば echo json_encode(1);としてください。そして、その場合は念のため、実際に返したいechoはコメントアウトしてください。
|
12
2
|
|
13
3
|
|
14
4
|
|
1
書き足し
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
|
|