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

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

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

解決済

4回答

12826閲覧

ajaxを使ってPHPにデータを受け渡したい。

jesushill

総合スコア37

PHP

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

JavaScript

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

Ajax

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

2グッド

3クリップ

投稿2016/05/07 02:04

初心者のものです。
現在、ajaxを用いて、JavaScriptからPHPへデータを
受け渡そうとしているのですがうまく表示が出来ないようです。

JS側ではsuccessとなるみたいなので、PHP側で問題が
あるのではないかと考えています。

ご教授頂ける方がおりましたら、何卒アドバイス宜しくお願い致します。

コードは以下の通りとなります。

lang

1$.ajax({ 2 type: 'POST', 3 url: './test.php', 4 dataType:'text', 5 data: { 6 name1 : "a" 7 }, 8 success: function() { 9 alert("成功"); 10 location.href = "./test.php"; 11 } 12 }); 13

lang

1test.php 2 3<?php 4if (isset($_POST["name1"])) { 5 echo $_POST['name1']; 6} else { 7 echo "値が入力されていません"; 8} 9 10 ?> 11
act823, yokudekiru👍を押しています

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

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

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

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

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

guest

回答4

0

回答ではなく、確認方法です。
php側のechoを確認するには、以下の手順で確認が可能です。

  • ChromeでF12を押してデバッグモードにする
  • Networkタブをクリック
  • ajaxのトリガーを叩くと、アクセス先のphpファイル名が表示されるのでそれをクリック
  • headersにPOST内容が表示される
  • Responseにecho(等のphpのレスポンス)が表示される

デバッグするとき結構便利です。

投稿2016/05/07 07:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

jesushill

2016/05/07 08:03

ありがとうございます。networkタブは初めてつかいました。使いこなすのは慣れが必要ですが、非常に便利ですね!
guest

0

ベストアンサー

PHPには値が渡せてます。

以下でやってみてください。

JavaScript

1$.ajax({ 2 type: 'POST', 3 url: './test.php', 4 dataType:'text', 5 data: { 6 name1 : "a" 7 }, 8 success: function(data) { 9 alert("success"); 10 //location.href = "./test.php"; 11 } 12});

success関数の引数のdataにechoされた値が戻ってきているはずです。

投稿2016/05/07 02:39

kentei_syunrai

総合スコア946

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

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

jesushill

2016/05/07 03:08

回答ありがとうございます。知識不足のところがあり、ご確認したい点があります。 alert("success")でなく、alert(data)でためしたところ、"a"が戻ってきました。 1.alert(data)とした際、"a"が戻ってきたのは、  PHPからの受け渡しとして理解してよいのでしょうか? 2.PHP文では、データの受け渡しをechoすることが出来ないのですが、これは  $_POST['name1']という受け渡し方に問題があるのでしょうか。 長文になり、大変申し訳ございません。 もし、ご回答いただけましたら幸いです。
kentei_syunrai

2016/05/07 03:25 編集

>1.alert(data)とした際、"a"が戻ってきたのは、PHPからの受け渡しとして理解してよいのでしょうか? PHPが返してきた結果です。試しに送るデータをbとかに変えたらbが返ってくると思いますよ。 >2.PHP文では、データの受け渡しをechoすることが出来ないのですが、これは$_POST['name1']という受け渡し方に問題があるのでしょうか。 いや、渡し方も間違っていないですし、echoできているからsuccessで戻ってきます。
nobuzoh

2016/05/07 03:59

ajaxと通常の画面遷移とを混同されているようですね。 kentei_syunrai さんの仰るとおり、 ajaxによって値を受け取っているtext.phpは見えない裏で動いています。 このtext.php内のデータがどのようになっているのかをデバックする(知る)には 現在やられているようにjavascript側でalertをだしたり、 text.php内ではerror_logなどでファイルに出力するなどの方法があります。 現状は何も間違っていませんので、 ajaxとlocation.hrefの違いを理解することと、 上記のようにajaxで呼び出すphpのデバッグ方法を覚えれば 解決できるのでは、と思います。
jesushill

2016/05/07 05:49

お二方、コメント頂きましてありがとうございます。 今までの私の理解では、 ajax PHPデータ渡し -> test.php へデータ受領かつ保持 という理解でしたが、 ajax PHPへデータ渡し->PHPファイルへ(データ受けた後、当該ファイル記述内容処理)  という流れみたいですね ※誤りがあれば教えて下さい。 とはいえ、データが受け取った変数をデータベースに書き込む処理を追加して 確認してみたいと思います。 お二方、物覚えが悪い者に丁寧にコメントくださり、ありがとうございます!
nobuzoh

2016/05/07 07:26

ajaxを使おうと使いまいとphpがやること、やれることに変わりはないです。 ajaxは非同期通信でデータ等のやり取りをするのに用います。 「ajax 非同期通信とは」などで検索するとその説明を見ることができます。 私は非同期通信=画面遷移する必要がない、と解釈しています。 ajaxを使った(非同期通信の)場合、 画面遷移することなくjavascriptからtest.phpにデータを渡し、 test.phpの出力結果を同じjavascript内で受け取って処理することができます。 ajaxを使わない(同期通信)場合、 test.phpに画面遷移し、test.phpの出力結果が表示されます。 location.href()やformのsubmitなど基本的にはこっち側にあたります。 普通は初学者は同期通信を「同期通信」という言葉も知らないで勉強し、 必要に迫られてajaxなどの非同期通信を知ることになるのですが、 jesushillさんはいきなりajaxから入ったようですね。 今時はそういう方も多いのかもしれませんね。
jesushill

2016/05/07 07:51

nobuzohさん、詳細な説明頂きましてありがとうございます。仰るとおり、PHPはGWから勉強をしている初学者です。今はなんとかPHPを使えるよう、頑張っている最中です汗 非同期通信、同期通信といった言葉は知っていても、実際に使ってみると、「あー自分はよくわかっていないんだな」と実感しました。。
guest

0

私、こうやってまーす^^

javascript

1$.ajax({ 2 type: 'POST', 3 url: './test.php', 4 dataType:'text', 5 data: { 6 name1 : "a" 7 }, 8 success: function(response) { 9 alert(response); 10 //location.href = "./test.php"; 11 } 12});

php

1<?php 2try { 3 if (isset($_POST["name1"])) { 4 $str = $_POST['name1']; 5 } else { 6 $str = '値が入力されていません'; 7 } 8 throw new PDOException(); 9} catch (PDOException $e) { 10 exit($str.$e->getMessage()); 11} 12

こうやっとけば phpのエラーコードもレスポンスしてくれるから便利なんですよ^^

投稿2016/05/07 05:13

編集2016/05/07 05:22
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

jesushill

2016/05/07 05:39

ご回答頂きましてありがとうございます。 エラーコードをレスポンスというのはエラーログでしょうか? ド基本ですみません。。
退会済みユーザー

退会済みユーザー

2016/05/07 07:34

エラーメッセージだけですね エラーログ全ての情報が欲しい場合は $str = error_log("エラー確認!", 0); ってしておけばいいんじゃないでしょうか?
jesushill

2016/05/07 07:51

おおっありがとうございます。エラーログすらわかっていなかったんで、助かります!
guest

0

Ajax というか、JavaScript の XMLHttpRequest は
あくまで「裏」で動くものなので、ブラウザに echo はムリです。
確認するなら、例えば適当なファイルに書き込んでみるとかですかね。

PHP

1<?php 2if (isset($_POST["name1"])) { 3 $str = $_POST['name1']; 4} else { 5 $str = '値が入力されていません'; 6} 7file_put_contents('hoge.log', $str); 8?>

投稿2016/05/07 02:15

takasima20

総合スコア7458

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

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

jesushill

2016/05/07 02:28

回答ありがとうございます。回答頂きましたコードで試してみたところ、PHP側で値が入力されていないことがわかりました。 ajax側ではsuccessまでいくのですが、php側へ送るデータの型などに問題があるのでしょうか。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問