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

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

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

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

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

2109閲覧

JSで取得したセレクトボックスの値をPHPに渡して値を整えてJSでアラートさせたい

Xinghua

総合スコア14

PHP

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

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/07/12 01:54

編集2019/07/12 02:02

前提・実現したいこと

selectボックスから要素を選んで「PHPからアラート」のボタンを押すとJSでValue(数値)を取得して
その取得した数値をPHPに持っていき、PHPで設定している配列とセットにして文字列にしたあと
JSにその文字列を返して画面でアラート表示したいです。

例えば、
①セレクトボックスで都道府県を選択
東京   ←選択
大阪
名古屋
京都
福岡
②JSで値を取得
0を取得
③0をPHPに渡す
④PHPで都道府県配列[jsからとってきた値]を取得
⑤JSに返して表示

の形にしたいです、
(わかりにくくてすみません。)
最初のセレクト文にセットしている値はPHPで指定しているため、
配列を実際に扱う(?)のはPHPだけにしたいと思っています。

確認のボタンではoutput.phpに遷移するためのボタンです。
(そこでは都道府県:1などで表示できています。)

発生している問題・エラーメッセージ

①アラートを表示するとおかしな文字列が出てきてしまう

エラーメッセージ(アラートで出てくる文章) ["\u798f\u5ca1","\u5317\u4e5d\u5dde","\u7b51\u8c4a","\u7b51\u5f8c","\u5927\u725f\u7530"]

②PHPで特定の処理だけ呼び出そすことができない
インターネッとを参照してみたのですが、(どんな形でもいいからと)適応させてみても
上記と結果が変わりませんでした。

該当のソースコード

html

1<!doctype html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 6 <title>practice</title> 7 <meta name="description" content="The HTML5 Herald"> 8 <meta name="author" content="SitePoint"> 9 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 10 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 11 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 12 <script src="../index.js"></script> 13 <link rel="stylesheet" href="../index.css?v=1.0"> 14 15</head> 16 17<body> 18 <h1 > Practice </h1> 19 <form name="form" method="post" action="output.php"> 20 <div> 21 <label for="name">タイトル:</label><input type="text" name="title"> 22 </div> 23 <div class="selectList">都道府県:<select id="tiiki" name="tiiki" ></select></div> 24 <div id="para"> 25 <label for="name">本文:</label><textarea name="body_text" cols="30" rows="5"></textarea> 26 </div> 27 28 <div> 29 <input type="submit" value="確認"> 30 </div> 31 </form> 32 33 <button id="ajaxbutton">PHPからアラート</button> 34 35</body> 36 37</html>

js

1$(function make_pdmenu(){ 2 3 $.ajax({ 4 url: "../index.php", 5 type: "post", 6 dataType: "json" 7 }).done(function (response) { 8 for(i=0;i<response.length;i++){ 9 $('#tiiki').append($('<option>').val(i).text(response[i])); 10 } 11 }).fail(function () { 12 alert("failed"); 13 }); 14 15 // select要素を作る 16 $('#tiiki').append($('<option>').val('').text('選択してください')); 17 18}); 19 20$(function() { 21 $('#ajaxbutton').click (function () { 22 $.ajax({ 23 url: "../index.php", 24 type: "post", 25 dataType: "text", 26 data: { 'tiiki': $('#tiiki').val() } 27 28 }).done(function (response) { 29 alert($('#tiiki').val() + "を選択した"); 30 console.log(response); 31 alert("success :" + response); 32 }).fail(function () { 33 alert("failed"); 34 }); 35 36 }); 37}); 38

PHP

1<?php 2 3$a = '東京'; 4$b = '大阪'; 5$c = '名古屋'; 6$d = '京都'; 7$e = '福岡'; 8 9$hairetu = array($a, $b, $c, $d, $e); 10echo json_encode($hairetu); 11 12//ここの関数で配列にJSでしゅとくした値をセットして文字列として返したい 13function doredaHairetu($tiikiData ,$hairetu){ 14 $data = $_POST['tiiki']; 15 $tiiki = $hairetu[ $data ]; 16 echo $tiiki; 17} 18

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

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

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

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

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

yambejp

2019/07/12 01:57

HTML側が東京,大阪,神奈川,京都で PHP側が東京,大阪,名古屋,京都,福岡となっています HTML側で「神奈川」を選んだときは何が返ってくるのでしょうか?
Xinghua

2019/07/12 02:00

すみません、例題で記載したものはたとえで出した状態でした! 実際の値はPHPのからとってきているので東京,大阪,名古屋,京都,福岡となっています! 紛らわしくてすみません、同じ値に修正します。
yambejp

2019/07/12 02:02

逆にHTMLとPHPが同じ状況だとわざわざPHPに戻らなくても セレクトボックスのインデックス番号を拾えばよいのでは?
Xinghua

2019/07/12 02:04

JSでいったん配列を保持→セレクトボックスのインデックス番号を設定してアラート はできるのですが、可能であれば今後のためにPHPのなかで値を整えられるようになりたくて...
guest

回答2

0

ベストアンサー

ざっと

  • mypage.html

javascript

1<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 2<script> 3$(function(){ 4 $('#ajaxbutton').on('click',function(){ 5 $.ajax({ 6 url:"api.php", 7 data:{tiiki:$('#tiiki').val()}, 8 type:"post", 9 dataType:"text", 10 }).done(function(data){ 11 console.log(data); 12 }); 13 }); 14}); 15</script> 16<select id="tiiki" name="tiiki" > 17<option value="">----</option> 18<option value="東京">東京</option> 19<option value="大阪">大阪</option> 20<option value="名古屋">名古屋</option> 21<option value="京都">京都</option> 22<option value="福岡">福岡</option> 23</select> 24<button id="ajaxbutton">PHPからアラート</button>
  • api.php

PHP

1<?php 2$a = '東京'; 3$b = '大阪'; 4$c = '名古屋'; 5$d = '京都'; 6$e = '福岡'; 7$hairetu = [$a, $b, $c, $d, $e]; 8$tiiki=filter_input(INPUT_POST,"tiiki"); 9if(in_array($tiiki,$hairetu)){ 10 print array_search($tiiki,$hairetu); 11}

投稿2019/07/12 02:19

yambejp

総合スコア114784

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

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

Xinghua

2019/07/12 02:40

ありがとうございます!onsole.logで数値の再現をするところまではできました! ただ大変恐縮なのですが、もし可能であればこのconsole.logに入っているdataの値を文字列にすることはできますでしょうか…?1が入っていれば大阪が返される、ような形で…
yambejp

2019/07/12 02:44

> 1が入っていれば大阪が返される その「大阪」という文字はhtml側のセレクトボックスからもってきますか? それともPHP側から持ってきますか? PHP側からもってくるなら二度手間になるので 1ではなく[1,”大阪”]のようなデータでapiから返してもらうほうがよいでしょう
Xinghua

2019/07/12 02:52 編集

なるほど!ありがとうございます! 今回はPHPから設定していたので値を整えるより前に、HTMLからそのまま値をとってきたほうが 二度手間にならずいいということですね!ありがとうございます!
guest

0

いえ、ちゃんと返ってますよ。

php

1<?php 2var_dump(json_decode('["\u798f\u5ca1","\u5317\u4e5d\u5dde","\u7b51\u8c4a","\u7b51\u5f8c","\u5927\u725f\u7530"]')); 3 4/** 5array(5) { 6 [0]=> 7 string(6) "福岡" 8 [1]=> 9 string(9) "北九州" 10 [2]=> 11 string(6) "筑豊" 12 [3]=> 13 string(6) "筑後" 14 [4]=> 15 string(9) "大牟田" 16} 17**/

おかしな文字列ではなく、あくまでjson_encode()でエンコードされた結果です。

投稿2019/07/12 02:01

m.ts10806

総合スコア80850

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

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

Xinghua

2019/07/12 02:06

現段階では選んだものが一つ返ってきてるのではなく、 選択可能なすべての文字列がjson_encode()でエンコードされた状態で返ってきている、 ということですね(認識が間違っていたらすみません。) これをセレクトボックスで選ばれた一つだけをPHPで値を整えて出すことは可能でしょうか…?
m.ts10806

2019/07/12 02:09

>選択可能なすべての文字列が JSON見た感じ「福岡県」を選んだときに「福岡県内の市」が返ってきているように思いますが。
Xinghua

2019/07/12 02:13

すみません、ソースを乗せさせていただくときに県内の市ではわかりにくいのでは、とエラー以外の地域表示を都道府県に変えてあります。なので、エラーで出ている場所がエンコード後、福岡北九州/筑豊/筑後/大牟田になってしまっています。
m.ts10806

2019/07/12 02:15

「エラー」と仰っていますが、結局エラーではないようです。 仰っている「エラー」をご提示いただけますか?
Xinghua

2019/07/12 02:22

すみません!文字の出力が想定と違っている、点をエラーと言ってしまいました。chromeのconsoleでエラーが出ているわけではありません。すみません。 文字コードに関してはPHPで形を変えているのが問題?かと思うのでそこのあたりを変えてみようかと思います! ただ、mts10806様からのものを見る限り配列がそのまま帰ってきているみたいなのでそこも返せるようになりたいと考えています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問