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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

1回答

1211閲覧

【ajax】phpの配列をjsで取得したい

MeB

総合スコア104

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

1クリップ

投稿2018/07/18 02:31

編集2018/07/18 02:41

前提・実現したいこと

phpで作成した配列をjsでajaxを使って
echoやprint_rなどを使わないで受け取りたい。

該当のソースコード

php

1//ajax.php 2<?php 3$data = [ 4 "test"=>[ 5 [ 6 "色"=>"赤", 7 "形"=>"丸", 8 "硬度"=>"固い" 9 ], 10 [ 11 "色"=>"青", 12 "形"=>"四角", 13 "硬度"=>"固い" 14 ], 15   [ 16 "色"=>"緑", 17 "形"=>"丸", 18 "硬度"=>"柔らかい" 19 ], 20 ] 21]; 22print_r($data); //print_rすると一応表示はされる 23 ?>

js

1$(function () { 2 // Ajax 3 $.ajax({ 4 url: 'ajax.php', 5 type: "POST", 6 dataType: "json", 7 success: function(data){ 8 var dataArray = data.test; 9 console.log(dataArray); //なにも表示されない

試したこと

jsのurl部分をphpではなく下記のようなjsonファイルの場合は正常に表示される

test.json

json

1{ 2 "test":[ 3 { 4 "色":"赤", 5 "形":"丸", 6 "硬度":"固い" 7 }, 8 { 9 "色":"青", 10 "形":"四角", 11 "硬度":"固い" 12 }, 13 { 14 "色":"緑", 15 "形":"丸", 16 "硬度":"柔らかい" 17 } 18 ] 19}

また、ajax.phpに上記のjsonを読み込んだ場合も正常に表示されました。

php

1$url = "test.json"; 2$json = file_get_contents($url); 3$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); 4echo $json;

補足情報(FW/ツールのバージョンなど)

Chromeのコンソールでみた際には下記のように表示させたいです。

(3) [{…}, {…}, {…}] 0:{色:"赤" 形:"丸", 硬度:"固い"} 1:{色:"青" 形:"四角", 硬度:"固い"} 2:{色:"緑" 形:"丸", 硬度:"柔らかい"} length:3 __proto__:Array(0)

ご教示宜しくお願いします。

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

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

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

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

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

KaiShoya

2018/07/18 02:39

echoやprint_rを使いたくない理由はなんですか?
MeB

2018/07/18 02:42 編集

ファイルにアクセスされた際にデータ(ここでいう色や形)が見れてしまうのを避けたいためです。
m.ts10806

2018/07/18 02:46

前の回答参考にしてます?javascript上で扱うということは誰でも参照可能ですよ。
m.ts10806

2018/07/18 02:46

それに「文字列で返す」と回答したはずが配列そのまま返そうとしてるし。。。もうちょっとちゃんと調べてください。
guest

回答1

0

ベストアンサー

  • ajax.php

PHP

1mb_internal_encoding("UTF-8"); 2$data = [ 3 "test"=>[ 4 [ 5 "色"=>"赤", 6 "形"=>"丸", 7 "硬度"=>"固い" 8 ], 9 [ 10 "色"=>"青", 11 "形"=>"四角", 12 "硬度"=>"固い" 13 ], 14 [ 15 "色"=>"緑", 16 "形"=>"丸", 17 "硬度"=>"柔らかい" 18 ], 19 ] 20 ]; 21print json_encode($data);

javascript

1$(function(){ 2 $.ajax({ 3 url: 'ajax.php', 4 type: "POST", 5 dataType: "json", 6 }).done(function(data){ 7 console.log(data); 8 }).fail(function(xhr,err){ 9 console.log(err); 10 }); 11});

parsererrorが出る場合は、dataTypeをtextにしてデバッグ

投稿2018/07/18 02:47

yambejp

総合スコア114747

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問