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

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

新規登録して質問してみよう
ただいま回答率
85.50%
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

解決済

2回答

714閲覧

非同期でJSからPHPへデータを渡したい

take45

総合スコア30

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グッド

0クリップ

投稿2018/06/08 00:50

前提・実現したいこと

初心者のWEBデザイナーです。
現在PHPを使用したwebサイトを制作しているのでが、
ボタンを押したらPHPの変数が変わるようにしたいと考えています。
location.hrefで値を渡すことはできるのですが、
できれば非同期で値を渡したいと思っています。

ajaxで非同期通信ができることが分かったのですが、
理解できず困っています。

ご教示よろしくお願いいたします。

ソースコード

<?php //webアプリケーション用の変数 $type = isset($_GET['type']) ? $_GET['type'] : 1 ; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>test</title> </head> <body> <button onClick="change(1)">type1</button> <button onClick="change(2)">type2</button> <script> function change(type){ location.href = "?type=" + type; } </script> </body> </html>

試したこと

だめもとでjs内にPHPを書いたけど、やっぱり駄目でした。

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>test</title> </head> <body> <button onClick="change(1)">type1</button> <button onClick="change(2)">type2</button> <script> function change(type){ if(type==1){ <?php $type = 1 ;?>{ }else{ <?php $type = 2 ;?>{ } </script> </body> </html>

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

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

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

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

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

CHERRY

2018/06/08 00:54 編集

Webブラウザに Webページの HTML を表示した時点で、サーバー側の PHP プログラムは終了していますが、「ボタンを押すとPHPの変数が変わる」というのは、どのような動作を期待しているのでしょうか?
kei344

2018/06/08 00:54

非同期で値を渡して何をPHP側から受け取るのでしょうか。
take45

2018/06/08 01:07

PHPの変数のtypeはCMSのwebアプリケーションの変数です。変数のカテゴリーのみを取得できるようになります。
CHERRY

2018/06/08 01:10

CMS ということですが、具体的にどのCMSをお使いでしょうか?
take45

2018/06/08 01:17

PHP工房の「新着情報・更新履歴CMS」です。bootstrapのタブを使用していてタブを押すとそのカテゴリーにあった投稿を取得したいと思っています。
take45

2018/06/08 01:20

いままでは、$_GETで再読み込みでカテゴリー変更をしていたのですが、今回は再読み込みせずに変更したいと思い質問させていただきました。
take45

2018/06/08 08:22

回答ありがとうございました。 今日中にサイトを完成させなければいけないので、 今回は、今までの方法で完成させます。 完成後、実現したい方法をじっくり勉強したいと思います。 ありがとうございました。
guest

回答2

0

「ajaxでできそう」とわかったなら
「PHP ajax」で調べてみてそれをやってみることです。
「何を見て、何がどう理解できなかったか」を具体的に書かないことには的確な回答は望めません。
今の段階だと「こういう記事があるからやってみては?」くらいです。

PHPとの間でAjax通信をおこなう[jQuery][post][done/fail/always]](https://noumenon-th.net/programming/2016/03/29/php_ajax/)

ちなみにteratalにヘルプ「質問するときのヒント」に下記のように書いてあります。
1-2. 投稿前に検索し、できるところまで自分でやってみましょう

投稿前に自分で一度調べてみましょう。そして調べたことを元に、一度は自分でやってみましょう。

今提示されている内容は「調べたことを元に」ではなく「単に自分が思うようにやって、できてない」だけです。
何事にもお作法と言うのがあります。「こうすればいける」は自分自身の感覚ではなく、そのお作法の元に成り立つものです。
プログラムは指示したとおりにしか動きません。正しく指示していないから動かない、それだけのことです。

追記:
既に指摘があるとおり、非同期で何かをPHPに渡したとして、何を受け取るのか、そこがはっきりしていません。そもそも非同期通信が今回の要件の最適解でしょうか?
「ボタンを押したらPHPの変数が変わる」
これだけでは意味が分かりません。
PHPはサーバー側の言語、HTML,JS,CSSなどはクライアント言語 ということを認識されていますか?
「変数を変えてどうしたい」そういうところまで要件を詰めておかないと、最適解は見えてこないのではないでしょうか。
※少なくとも現時点では非同期通信が最適解とは思えません。

非同期通信の役割と意味、概念を学んでから、検討されたほうがいいように思います。

投稿2018/06/08 00:59

編集2018/06/08 01:04
m.ts10806

総合スコア80765

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

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

take45

2018/06/08 01:33

変えたい変数はPHPのCMS用の変数です。変えることにより取得カテゴリーを変えることができます。Ajaxは試してみたのですが、jsで<p>等の内容を変えることはできたのですが、PHPの内容はどう変えるのかわからず質問しました。
m.ts10806

2018/06/08 01:40

再掲します。 >PHPはサーバー側の言語、HTML,JS,CSSなどはクライアント言語 ということを認識されていますか? 「PHPのCMS用の変数」それは何でしょうか? CMSは何?どの変数?変えてどう使いたい? この辺りがはっきりしないとこれ以上の回答はのぞめません。 「非同期通信」その意味と役割は理解できましたか?その上で非同期通信が使えると思ったのであれば、おそらくやろうとしていることとできることの齟齬に気づいてなさそうな気がします。
take45

2018/06/08 08:23

回答ありがとうございました。 やりたいことを実現するには「非同期通信」ではななさそうです。 今日中にサイトを完成させなければいけないので、 今回は、今までの方法で完成させます。 完成後、「非同期通信」をじっくり勉強したいと思います。 ありがとうございました。
m.ts10806

2018/06/08 13:56 編集

なるほど。「今日」を迎えるまでに必要なことが揃っていなかったようですね。 おそらくこのまま公開をむかえるには何もかも足りていないのではないでしょうか。 teratailもこの質問をするためだけに今日登録されたとしたら遅すぎますね。 まあ見ているだけのこちら側には関係のないことではありますが。 (何も解決していないのに時間がという理由で無理やり解決済みにしてしまっているところに今後の危機が容易に想像できてしまいますが、他人の発言なので気にしすぎないように)
guest

0

ベストアンサー

ブラウザ上に表示されている結果はphpの変数をリアルタイムに追いかけているわけではなく
過去の変数をみているに過ぎません。

phpに値を渡して変数を変えた上でその結果を画面に反映したいのであれば
それようのAPIを用意し、画面の一部もしくは全部を書き換えることで実現できると思います。

投稿2018/06/08 01:55

yambejp

総合スコア114572

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

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

take45

2018/06/08 08:22

回答ありがとうございました。 今日中にサイトを完成させなければいけないので、 今回は、今までの方法で完成させます。 完成後、「API」をじっくり勉強したいと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問