質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

2回答

752閲覧

PHPからJqueryにJSONが渡らない

maeda_1111

総合スコア9

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/08/25 08:45

やりたいこと

PHPファイルでDBから取得したデータをJSON形式に変換。その後、JQueryファイルでJSONをパースしたい。
初心者なので、実際のコードで教えていただけたら幸いです。
PHPファイル

php

1$dbh = new PDO($dsn,$user,$password); 2 3//ページID 4if($_GET["blog"]){ 5 $get_prm = $_GET["blog"]; 6 $sql = <<<EOF 7select * 8from aging_table 9where trouble_id = $get_prm 10EOF; 11 $stmt = $dbh->query($sql); 12 $res = $stmt->fetchAll(); 13 foreach($res as $rs){ 14 $json = <<<EOF 15{"trouble_id":"{$rs["trouble_id"]}", 16EOF; 17 } 18 //jsonデータの最初と最後に[]をつける処理 19 $json = substr($json,0,-1); 20 $json = "[".$json."]"; 21 //END 22 $res = $json; 23 print_r($res); 24}

HTMLファイル

jQuery

1 $(function(){ 2 $.ajax({ 3 type : "POST", 4 url : "aging_trouble_detail.php", 5 data : "type=hide", 6 success : function(res){ 7 console.log(res); 8 res = JSON.parse(res); 9 $(res).each(function(ind,obj){ 10 }); 11 }, 12 }); 13 }); 14

エラー

HTML

1SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data[詳細] 2

確認したこと

・PHPでのprint_r($res);での結果は[{"trouble_id":"8"]
・jQueryでのconsole.log(res);の結果は、ページ全体ののURLと上記エラーが表示
・検証ツールでネットワークを確認したところ、正常に通信がされ、type=hideは渡っていました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

あまりPOSTでKEY=VALUEでつないで送るのは見ませんが(通常配列で送ります)

js

1data : {"type":"hide"},

あとtypeをPOSTで送っているのにPHPで$_GETで受け取っているので不整合が起きています。
JavaScript側から正しく利用できていないのではないでしょうか。

ひとまず、Ajaxで返す場合は文字列を出力する必要があります。

配列を作った上で

php

1echo json_encode($data);

とします。

またjsonで受け取りたい場合はajaxの引数のdataTypeにjsonを指定します。
そうすることでJSON.parse()の必要もなくなります。

下記の記事なども参考にしてください。

初心者なので、実際のコードで教えていただけたら幸いです。

ここまで自身で組まれているので、ヒントだけで解決可能と判断し、修正する箇所と参考URLのみで回答としました。
初心者こそトライ&エラーでなんぼだと思うので、アドバイスや参考記事をもとにやってみてください。

投稿2018/08/25 08:52

編集2018/08/25 09:31
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maeda_1111

2018/08/27 10:53

確かに$_POSTでデータがPHPに渡っていませんでした。 教えていただいたサイトが非常に分かりやすかったので、こちらで基礎を学習してみます。 有難うございます。
guest

0

print_r($res);

jsonでゴミを出力てはいけません。
そもそも$res = $stmt->fetchAll();した$resを回すwhileの中で
$res = $jsonと上書きしているのが問題でしょう

pDOのオプションが未記載なので出力データがFETCH_ASSOC
なのかもわかりません。

また、phpの配列をjsonでだすなら

PHP

1print json_encode($data);

などjson関数を利用ください

投稿2018/08/27 00:56

yambejp

総合スコア114779

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問