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

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

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

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

JavaScript

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

Q&A

解決済

3回答

4149閲覧

PHPからJavascriptへのデータの渡し方

cometbeet

総合スコア21

PHP

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

JavaScript

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

0グッド

1クリップ

投稿2019/03/25 03:27

編集2019/03/25 04:42

質問内容

現在ブラウザのページにグラフを表示しようとJavascriptを使って色々試行錯誤しているのですがその際データを渡す良い方法がわかりません。
一応html上に

<script type="text/javascript"> var data0 = ... var data1 = ... </script>

みたいなものを挿入すれば受け渡せるのですがそれだとソースコードに直接書いてしまうためあまり良いとは思えません。
ajaxという非同期通信?を使用するとできると聞いたので試しにphpファイル上で`echo 'sample``と最後に書いてから
jsファイル上で

$.ajax( { type: 'GET', dataType: 'json', url: 'ファイル名' } ).done( function( data ) { alert(data); console.log(data); } );

と書いてみたのですがコンソール上などに何も表示されなかったのでデータが渡せなかったのだと思います。
ajaxのような非同期通信を使うかまたは別の渡せる方法があれば知りたいのでよろしくお願いします。

##追記

ネットや過去質問で検索してみてはどうかということについて

検索はしてみたのですがjavascriptからphpのは多いのですがphpからというのがあまり見つかりませんでした。
見つかったのですとこのサイトこのサイトのようにvar foo = <?php echo $foo; ?>;と書くものでした。
ただこのやり方ですと

SyntaxError: expected expression, got '<'

とブラウザで言われてしまいデータが受け取れませんでした。
シングルクォーテーションで囲むものもあったのですがそれだとただの文字列となってしまいました。
このサイトのやり方ですとJSONに変換しているのですが中に書くやり方なので同じ方法と判断しました。
このやり方はこの質問を参考にしてやってみました。

直接書くことについて

直接書く書き方だとそのためだけに<script type="text/javascript"></script>が追加されてしまい、無理やり解決するように感じてしまったためそのように書いてしまいましたすみません。実際javascriptで扱うデータなのでデータは見られてしまいますし、問題自体はないのかなとは思います。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/03/25 03:30

ネット検索すれば、いろんな事例が見つかる話だと思うけど、自分で調べようとしたのでしょうか? ナニを参考にコードを書いていますか?
m.ts10806

2019/03/25 03:32

過去質問に同類のものが結構あがっています。まずは過去質問を確認してみてはいかがでしょうか?
tabuu

2019/03/25 03:45

>みたいなものを挿入すれば受け渡せるのですがそれだとソースコードに直接書いてしまうためあまり良いとは思えません。 何か問題ありますか?
guest

回答3

0

ベストアンサー

やり方には作法みたいなものがあるので、
まずはサンプル通りに試してみてください。

【PHP】Ajaxを使ってJSON形式で配列データを取得し、Webページ上に表示させる最低限の方法 - Qiita

投稿2019/03/25 03:29

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

cometbeet

2019/03/25 08:57

わかりましたここを見てまず基本を覚えてみようと思います。
guest

0

javascript

1<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 2<script> 3$(function(){ 4 $.ajax({ 5 type: 'GET', 6 //dataType: 'json', 7 dataType: 'text', 8 url: 'sample.php' 9 }).done( function( data ) { 10 alert(data); 11 console.log(data); 12 }); 13}); 14</script>

とりあえずdataTypeをtextにして受けてみてください
おそらく型があっていないだけだと思います

jsonで受けるなら配列やオブジェクトに変換できるjson形式にしてください

PHP

1<?PHP 2echo '["sample"]';

投稿2019/03/25 04:06

yambejp

総合スコア114769

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

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

cometbeet

2019/03/25 08:57

json形式で整えたら表記できました。 後$(function(){});もいるのですね。
yambejp

2019/03/25 09:03

ajaxだけでいえば$(function(){});はなくても動きますよ
guest

0

ajaxやろうとしてできなかったのは別回答の通りとして、
質問後半について言及してみます。

実際javascriptで扱うデータなのでデータは見られてしまいますし、問題自体はないのかなとは思います。

認識どおり問題ないと思います。
ajaxにしてもajaxで取得するためのコードを書かなければならないわけですし、それを非同期で呼び出すか、PHPプログラムで直接取得した情報をechoするかのどちらかで、ほぼ同じです。

非同期で呼び出す場合のPHP

php

1<?php 2$data = [10,20,50,100]; 3echo json_encode($data);

PHPプログラムで直接取得した情報をechoする

php

1<?php 2$data = [10,20,50,100]; 3?> 4<script> 5 var data = <?php echo json_encode($data);?>; 6</script>

いずれにしてもPHPコードは参照されないわけですし。
ajaxにすることによってajaxで指定されたURLが直接実行されたときの対策も実は必要だったりして、それはそれでそれなりの面倒があります。

投稿2019/03/25 05:16

m.ts10806

総合スコア80850

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

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

cometbeet

2019/03/25 09:01

なるほどajaxでやる場合にも対策が必要なのですね。 XSSやアクセス制限みたいなものと考えていいのでしょうか?
m.ts10806

2019/03/25 09:47

XSSは画面出力時なので 「PHPプログラムで直接取得した情報をechoする 」には必要ですね。 「非同期で呼び出す場合」はデータ自体は表示に使われるかどうかphp側は知らないのでやるならJavaScript側です。 そもそものSyntaxErrorがHTMLファイルまたはJSファイルに直接php書こうとした結果出てるっぽいエラー内容なのでその辺りは理解を深めていく必要はありそうです。
cometbeet

2019/03/27 04:14

そうですね、エラーの部分は参考サイトでこう書かれていたのでJSファイル内で直接PHPが呼び出せるものかと思ってやってしまいました。 なるほどJavascript側で対策するのですね。Javascriptはまだ触りたてわからない部分が多いのでそういうセキュリティ面も含めて勉強していこうかと思います。
m.ts10806

2019/03/27 04:18

PHPはあくまで.php拡張子のファイルでのみ利用できると思って良いです(サーバー設定により.htmlでも可能ですが混乱を招くのでやめましょう) 「安全なウェブサイトの作り方」は参考になると思います。チェックリストもpdfなどで出回っているので全て導入するかはさておき脆弱性についても知ることが出来ると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問