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

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

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

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

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

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

Q&A

4回答

2327閲覧

jQuery+Ajax+PHP 文字列の違いに関して。

mea

総合スコア8

PHP

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

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

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

0グッド

0クリップ

投稿2015/10/07 21:11

編集2022/01/12 10:55

現在下記のようなプログラムtest.phpのJSからAjax経由で別ファイルのPHPを呼び出しています。
route.phpの中身では$_POSTで値を受け取りDBから値を取り出すような処理をしています。

疑問点・現状の動作としては
test.php上部にあるgoalidの値を$(this).val()で取得した場合ajaxのdoneの処理に入らず、文字列を成功例の様に指定する分にはdoneの処理が通ります。

想定している動作としてはセレクトボックスを選ぶ度にセレクトボックスのvalue値を検索条件にしたDBへの問い合わせを行いたいと考えているので、doneの処理まで通るようにしたいです。

どうぞよろしくおねがいします。

route.php

$start = $_POST["start"]; // 現在地orスタート地 $goal = $_POST["goal"]; // 目的地 中略 makeNode( $start, "" ); 中略 $route = makeRoute( $current ); // startからgoalまでのルートを配列に header('Content-Type: application/json'); print(json_encode($route));

test.php

PHP

1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=utf8"/> 4<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 5<script> 6 $(function(){ 7 $("select").change(function(){ 8 var startid = "04A1B9AA7B2B80"; 9 var goalid = $(this).val();//失敗例 10 //var goalid = "00000000000000"; 成功例 11 alert(goalid); 12 alert(typeof(goalid)); 13 $.ajax({ 14 type:'POST', 15 url:'./route.php', 16 dataType:'json', 17 data:{start:startid, 18 goal:goalid} 19 }).done(function(data,status,xhr){alert('ok'); 20 }).fail(function(xhr,status,error){alert('error');}); 21 }); 22 }); 23</script> 24</head> 25<body> 26 27<select id="sel"> 28<option value="">目的地を選んでください。</option> 29<option value="04DBEB9A7B2B80">選択肢1</option> 30<option value="04D4BAAA7B2B80">選択肢2</option> 31</select> 32</body> 33</html> 34---------alertの結果---------------------------- 35成功例の場合 3604DBEB9A7B2B80 37string 38ok 39失敗例の場合 4004D4BAAA7B2B80 41string

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

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

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

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

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

orange0190

2015/10/07 23:53

$(this).val()としたときのalert(goalid)はなんと出ているか教えてもらえますか?
mea

2015/10/09 01:13

alertの値は $(this).val()で取得した場合も成功例の様に直接変数に入れた場合でも 04DBEB9A7B2B80 string といったように表示されます
guest

回答4

0

jQueryのselectorを以下のように変更してみてください。

javascript

1$("#sel").change(function(){ 2 // 中略 3 var goalid = $("#sel").val(); 4 // 以下略 5 ....

投稿2015/10/13 11:00

編集2015/10/13 11:13
io_ohta

総合スコア12

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

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

0

routes.phpを下記のように書き換えてChromeで同様のコードを実行したところ
alertで「ok」が表示されました。
レスポンスも正しい配列が返ってきています。

php

1<?php 2$start = $_POST["start"]; // 現在地orスタート地 3$goal = $_POST["goal"]; // 目的地 4$route = array($start, $goal); 5header('Content-Type: application/json'); 6print(json_encode($route));

ブラウザのバグでなければjsのソースは問題ありません。
PHPのソースが怪しいです。

下記いくつか、確認していただけますか?
・正常に処理が動作しなかったブラウザはどれか(Chromeでも同様の現象が起こるか)
・ブラウザの開発者モード「ネットワーク」タブでリクエスト・レスポンス・ステータスコード・レスポンスヘッダは何が表示されているか
・ajaxのオプションにcache: falseを追加してもうまくいかないか

よろしくお願いします。

投稿2015/10/09 03:43

ShoheiTai

総合スコア897

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

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

0

alert使ってらっしゃいますが、どう表示されますか?

投稿2015/10/08 03:28

Jake

総合スコア289

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

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

mea

2015/10/09 01:18

失敗例 成功例のどちらも 04DBEB9A7B2B80 string といった具合で表示されます。 .done.failの部分では成功例では「ok」が表示されますが、失敗例では何も表示されません。
guest

0

JSの処理は問題なさそうなので、PHPの処理が怪しいと思います。

開発者モードを使って、PHPからの返り値を確認すれば何かわかるかもしれないです。

}).fail(function(xhr,status,error){ // ※xhrにPHPの値が格納されています。 console.debug(xhr); });

投稿2015/10/08 01:10

ymknjugg

総合スコア131

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

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

mea

2015/10/09 01:23

ありがとうございます。 一度試してみたいと思いますが、失敗例の様に$(this).val()で値の取得を行った場合にalert(”error”)のアラートが表示されていない現状です。 またroute.php側で$_POSTで受け取っている部分をGETで受け取るようにしてURLに直打ちした場合でのデバックでは正常に動いております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問