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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

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

Q&A

解決済

3回答

2613閲覧

PHPでjsonデータを取り出す方法

退会済みユーザー

退会済みユーザー

総合スコア0

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

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

0グッド

0クリップ

投稿2016/07/15 06:29

編集2016/07/15 06:32

PHPで下記のようなjsonデータを取り出したいのですが、様々な方法を試したのですが、なぜか取り出せまんせでした。

jsで作成し、consoleで吐いたモノが下記になります。 0:Object date:"2016-07-14" department:"CR" err_code:1
error_log(json_encode($params)); で吐き出した値が下記でした。 ["[object Object]","[object Object]","[object Object]","[object Object]","[object Object]"]

foreachなどを試し、json_encodeをしてもなかなか取り出せず、
value ======= [object Object],のようになってしますのですが、原因がよくわかりません。

取り出す方法を教えていただきたいです。
お願い致します。

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

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

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

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

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

guest

回答3

0

JavaScriptでJSON.stringifyってやってますか?
PHPに渡されてきたJSON文字列をそのまま出力して確認してみては

投稿2016/07/15 06:39

scenesk

総合スコア24

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

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

退会済みユーザー

退会済みユーザー

2016/07/15 06:54

phpに渡されてきたjsonが出力できないのですが...
scenesk

2016/07/15 06:57

JSON自体は文字列なのでechoでもすれば出力できます
退会済みユーザー

退会済みユーザー

2016/07/15 08:05

なぜか出力はできなかったのですが、 JSON.stringifyをやっておりませんでしたので、大変参考になりました。 ありがとうございました!
guest

0

ベストアンサー

使うのはjson_decodeなのでは。

投稿2016/07/15 06:31

ttyp03

総合スコア16998

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

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

退会済みユーザー

退会済みユーザー

2016/07/15 06:34

json_decodeですと、error_logに出てこないのですが...
ttyp03

2016/07/15 06:39

error_logの引数は文字列ですからjson_decodeの戻り値をそのまま渡しても出ないのでは。 やりたいのは、JSONデータを作りたい、JSONデータを展開したい、どちらですか? 質問文は曖昧です。 作りたい → json_encode 展開したい → json_decode 展開したいのであれば、var_dump(json_decode($params))としてみれば、どのような形式で入っているのか見れるかと思います。
退会済みユーザー

退会済みユーザー

2016/07/15 06:56

やりたいことは展開したいことです。 また、var_dumpしてみましたが、1とは出たのですが、中身が表示されませんでした。
ttyp03

2016/07/15 06:59

なんかJSONデータとして正しくない気がしますね。 正しければ下記マニュアルのサンプルのように出ると思いますので。 http://php.net/manual/ja/function.json-decode.php まずは$paramsの値を確認してみては。
退会済みユーザー

退会済みユーザー

2016/07/15 08:07

json.stringifyをしていなかったのと、json_decodeをした際に、余計な文字が含まれていたのが原因で、データが取得できておりませんでした。 ただ、var_dumpをしても依然として表示できなかったので、もう少し調べてみます。 ありがとうございました!
guest

0

以下手順を確認ください

送り元:send.htm

HTML

1<script src="js/jquery.js"></script> 2<script> 3var a={date:"2016-07-14",department:"CR",err_code:1}; 4$.ajax( { 5url : "recv.php", 6cache : false, 7type:"post", 8async: false, 9dataType:"json", 10data : a , 11success: function(msg){ 12 console.debug(msg); 13}, 14error: function(XMLHttpRequest, textStatus, errorThrown) { 15 console.log( textStatus); 16}, 17} ); 18</script>

受け先:recv.php

PHP

1<?PHP 2ob_start(); 3print_r($_POST); 4$content=ob_get_contents(); 5ob_end_clean(); 6print json_encode($content); 7?>

投稿2016/07/15 07:14

yambejp

総合スコア114784

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

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

退会済みユーザー

退会済みユーザー

2016/07/15 08:04

ご回答ありがとうございます! ob_get_contens()というものを知らなかったので、勉強になりました。
yambejp

2016/07/15 08:07

で、エラーの箇所のあたりはつきましたか? 想定したprint_rの戻り値が返ってきてないなら 送りかたに問題があるのかもしれません。 print_rではただしそうであれば、ajaxへの戻し方 に問題があると思います
退会済みユーザー

退会済みユーザー

2016/07/15 08:10

はい、つきました。 jsでstringifyしたデータに余計な文字が含まれていたので、decodeした値を指定して取得することができませんでした。 ただ、var_dumpやechoでの表示はできなかったので、もう少し調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問