jsonの取得方法について

このQ&Aのポイント
  • 選択したラジオボタンによって、プルダウンの中身を変える方法
  • スクリプトを使用して学校のデータを取得する方法
  • ファイルの配置やコードの修正方法
回答を見る
  • ベストアンサー

jsonの取得方法について

選択したラジオボタンによって、プルダウンの中身を変えたいです。 スクリプト書いてみましたが、学校のデータが取得できません。 ファイルは以下のような感じで、同じフォルダにあります。 どのようにすれば正しく動くのでしょうか? ご教示の程よろしくお願いいたします。 ・スクリプト $("input:radio[name='school']").change(function(){ $("#gakkou").empty().append("<option value=''>-選択-</option>"); var school = $(this).val(); $.getJSON("school.json", function(data){ for (var i = 1; i <= school.length; i++) { $('#gakkou').append('<option value="' + i + '">' + data[school[i]]+ '</option>'); } }); }); ・index.html <td id="school"> <input type="radio" value="中学" name="school"/> 中学   <input type="radio" value="高校" name="school" /> 高校   <input type="radio" value="大学" name="school" /> 大学 </td> 学校: <select id="gakkou"> <option value="">-選択-</option> </select> ・school.json {"中学":{"1":"ABC中学校", ~中略~ "100":"XYZ中学校"}, "高校":{"1":"ABC高等学校", ~中略~ "100":"XYZ高等学校"}, "大学":{"1":"ABC大学", ~中略~ "100":"XYZ大学"}}

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

$.getJSON("school.json", function(data){ console.log(data); }); とかしても中身見えませんか?

kurolovea
質問者

補足

[object Object] と表示されます。

関連するQ&A

  • jsonとcheckboxでの料金計算について

    jqueryを利用して、簡単な料金シュミレーションを作っています。 主な料金については、計算が出来たのですが、 オプションの料金について、オプション項目と料金をjsonファイルにまとめておき、 checkboxの選択によってオプション料金を足し算したいのです。 具体的には、下記のようなjsonファイルがあるとします。 "opts": { "option1" : { "1d": 0, "w": 0, "m": 0 }, "option2" : { "1d": 1620, "w": 8316, "m": 14904 }, "option3": { "1d": 540, "w": 3240, "m": 3240 }, "option4": { "1d": 540, "w": 3240, "m": 3240 }, "option5" : { "1d": 540, "w": 1620, "m": 5400 } } checkboxは下記のようになっています。 <input id="option1" type="checkbox" value="option1" name="opts"> <input id="option2" type="checkbox" value="option2" name="opts">  ・  ・ <input id="option5" type="checkbox" value="option5" name="opts"> checkboxが選択されたら、該当する値をjsonから取得して足し算をすることは 出来ますでしょうか? ご教授宜しくお願いいたします。

  • JAVAのチェックボックスの扱いについて

    HTMLから選択された情報をJSPで表示するプログラムを作っているのですがチェックボックスが選択されてるかどうかのプログラムの書き方がわかりません。 とりあえず出来ているところまでのソースを見せます。 ・HTML <input type="checkbox" name="aa" value="aa"> <input type="checkbox" name="aa" value="bb"> <input type="checkbox" name="aa" value="cc"> <input type="checkbox" name="aa" value="dd"> <select name="abc"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> ・JSP //情報をもらう String abc = request.getParameter("abc"); String[] aa = request.getParameterValues("aa"); for(int i=0;i<aa.length;i++){ aa[i]; } 上のようにチェックボックスは情報を取り出しているんですが 選択されていないときはエラーになってしまいます。 for文の前に値が入っているかどうかのチェックをしなくてはいけないのですがどのように書いていいかわかりません。 誰か教えてください。

    • ベストアンサー
    • Java
  • JAVAスクリプトでのFORM入力チェックの方法

    JAVAスクリプトでのFORM入力チェックの方法を教えてください。 ネットでいろいろ探してはめ込んだのですが、動作するプログラムが下記のしかありませんでした。 ラジオボタンの入力チェックとプルダウンの入力チェックを同時にしたいのですがよくわかりません。 今の状態ではラジオボタンをチェックしても未入力のアラートが出てしまいます。 あとこれにプルダウンの入力チェックをつけたいのですが… すいませんがどなたか教えてください。よろしくお願いします。 function Form_Validator(theForm) { var flag=false; var i; for(i=0; i<theForm.OPT-00-06.length; i++){ if (theForm.OPT-00-06[i].checked){ flag = true; break; } } if(!flag){ alert("\"OPT-00-06\" にチェックしてください。"); return (false); } if(confirm("入力もれはありません。")){ return (true); }else{ return (false); } <form name="form1" method="POST" action="~cgi?" onsubmit="return Form_Validator(this);"> ・ ・ <input type="radio" name="OPT-00-06" value="A"> <input type="radio" name="OPT-00-06" value="B"> ・ ・ <select name="OPT-00-07"> <option value="">選択してください</option> <option value="80">80</option> <option value="81">81</option> ・ ・ ・ <select name="OPT-00-08"> <option value="">選択してください</option> <option value="35">35cm</option> <option value="36">36cm</option> ・ ・ ・ <input type="submit" value="カートに入れる" name="submit">   <input type="reset" value="内容をクリア" name="reset"> </div> </form>

  • ラジオボタンでうまくするには・・・・

    初めまして。 現在下記のプルダウン形式で、一つの価格が同じなので問題なく動くのですが <FORM action="cart/sys/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=hidden value=2000 name=tan> <SELECT name=sur> <OPTION value="" selected>購入数量</OPTION> <OPTION value=1>1</OPTION> <OPTION value=2>2</OPTION> <OPTION value=3>3</OPTION> <OPTION value=4>4</OPTION> <OPTION value=5>5</SELECT> <INPUT type=submit value=カートに入れる> </FORM><BR> <FORM action="・・・/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=hidden value=2000 name=tan> </FORM> 同じ商品で1・2・3・4・5のそれぞれに単価が変わる設定をしたいのですが、うまくいく方法が見つからないです。 ラジオボタン形式で作ってみたものの・・・・ <FORM action="・・・/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=submit value=カートに入れる> </FORM> <FORM> <INPUT type="radio" name="name1" value="2000">1袋<BR> <INPUT type="radio" name="name1" value="3900">2袋<BR> <INPUT type="radio" name="name1" value="5800">3袋<BR> <INPUT type="radio" name="name1" value="7500">4袋<BR> <INPUT type="radio" name="name1" value="8500">5袋</FORM> としてみましたがうまくいきません。 なにか方法ございましたら、ご教授いただければと思います。

    • ベストアンサー
    • HTML
  • アンケート結果の受け取り方法

    以下のことがわからないので教えてください。 1.曜日、時間、授業コードのデータ、各質問項目で選択された結果を受け取る 2.授業コードのファイル(CSV形式)を開き、各結果を追加記述する   受け取ったコードをファイル名とするCSVファイルに追加型で書き込みたい 3.自由記述の内容を受け取り、CSVへ追加記述する述する <html> <head><title>リクエストパラメータを発行するHTML</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS"> </head> <body background="..\images\tile.jpg"> <h1 align="center"><font size=6 >授業改善用アンケート</font></h1><br> <form action=http://localhost:8080/MyApp/servlet/Param method> <h3 align="left"><font size="4">曜日指定して下さい</font></h3> <!--<form action="cgi-bin/formsample.cgi"method="post">--> <select name="day"> <option value="月曜日">月曜日</option> <option value="火曜日">火曜日</option> <option value="水曜日">水曜日</option> <option value="木曜日">木曜日</option> <option value="金曜日">金曜日</option> <option value="土曜日">土曜日</option> </select> <h4 align="left"><font size="4">時間指定</font></h4> <!--<form action="cgi-bin/formsample.cgi"method="post">--> <select name="time"> <option value="1限目">1限目</option> <option value="2限目">2限目</option> <option value="3限目">3限目</option> <option value="4限目">4限目</option> <option value="5限目">5限目</option> </select> <br> <form action='cgi-bin/formsample.cgi'method='post'> <p> 授業コード<input type='text'name='code'> </p> </font> <p> Q1 質問をここに書き込む </p> <form action='cgi-bin/formsample.cgi'method='post'> <p> <input type='radio'name='reason'value='famous'>思う <input type='radio'name='reason'value='location'>やや思う <input type='radio'name='reason'value='variety'checked>どちらでもない <input type='radio'name='reason'value='instructor'>やや思わない <input type='radio'name='reason'value='cost'>思わない </p> <p> <p> Q2 質問をここに書き込む </p> <form action='cgi-bin/formsample.cgi'method='post'> <p> <input type='radio'name='reason1'value='famous'>思う <input type='radio'name='reason1'value='location'>やや思う <input type='radio'name='reason1'value='variety'checked>どちらでもない <input type='radio'name='reason1'value='instructor'>やや思わない <input type='radio'name='reason1'value='cost'>思わない </p> <p>Q3 質問をここに書き込む</p> <form action='cgi-bin/formsample.cgi'method='post'> <p> <input type='radio'name='reason2'value='famous'>思う <input type='radio'name='reason2'value='location'>やや思う <input type='radio'name='reason2'value='variety'checked>どちらでもない <input type='radio'name='reason2'value='instructor'>やや思わない <input type='radio'name='reason2'value='cost'>思わない </p> <p>Q4 質問をここに書き込む</p> <form action='cgi-bin/formsample.cgi'method='post'> <p> <input type='radio'name='reason3'value='famous'>思う <input type='radio'name='reason3'value='location'>やや思う <input type='radio'name='reason3'value='variety'checked>どちらでもない <input type='radio'name='reason3'value='instructor'>やや思わない <input type='radio'name='reason3'value='cost'>思わない </p> <p>Q5 自由にどうぞ</p> <form action='cgi-bin/fromsample.cgi'method='post'> <p> <textarea name='opinion1'rows='8'cols='50'></textarea><br> <input type="submit" value="送信"><input type="reset"> </form> </body> </html>

    • ベストアンサー
    • Java
  • ボタンで選択されていないセレクトメニューの非反映2

    前回、「ボタンで選択されていないセレクトメニューの非反映」という質問をさせて頂いたものです。 http://okwave.jp/qa/q7093835.html 文章構成などは下記のHTMLをしようしているのですが…。 「蓋付きのボックス」の<ラジオボックスをチェックしなければ選択できない>はクリアできたのですが、「蓋付きバスケット」の方で迷っています。 後はこれで合計金額がきちんと出ればいいのですが…、 もうすこしお力とお時間を頂けないでしょうか? <html> <head> <title>簡単見積もり表</title> <script Language="JavaScript"> <!-- function calc() { n = 0; fObj = document.myFORM; n += eval(fObj.sel0.options[fObj.sel0.selectedIndex].value); n += eval(fObj.sel1.options[fObj.sel1.selectedIndex].value); for (i=0; i<3; i++) if (fObj[i].checked) n += eval(fObj[i].value); for (i=3; i<19; i++) if (fObj[i].checked) n += eval(fObj[i].value); fObj.result.value = n; } function linker(evt){ var t = evt.target || evt.srcElement; if(t.nodeName != "INPUT" || t.type != "radio") return; var sel, i, s; sel = t.form.getElementsByTagName("select"); for(i=0; s=sel[i++];) if(/(^| )linkage( |$)/.test(s.className)){ t = s.previousSibling; while(t && (t.nodeName != "INPUT" || t.type != "radio")) t = t.previousSibling; if(t) s.disabled = !t.checked; } } // --></script> </head> <body> <form name="myFORM" action="#" onclick="linker(event)"> <BR> <b>セットの果物を一つお選び下さい</b><br> <input type="radio" name="ch1" value="100">りんご(100円) <input type="radio" name="ch1" value="20">バナナ(20円) <input type="radio" name="ch1" value="200">梨(200円) <input type="radio" name="ch1" value="250">ブドウ(250円) <input type="radio" name="ch1" value="150" checked>みかん(150円)<br> <BR> <b>リボンの色をお選びください</b><br> <input type="radio" name="ch2" value="0" checked>赤(0円) <input type="radio" name="ch2" value="2000">青(0円) <input type="radio" name="ch2" value="0">金(10円)<br> <hr> <b>バスケットの形をお選び下さい</b><br> <INPUT type="radio" name="cover" value="1200" checked>プラスチック丸型編み込み\1200<INPUT type="checkbox" name="bx1" value="500">素材を木に変更(+\500)<BR> <INPUT type="radio" name="cover" value="1500">編み込み四角\1500<BR> <INPUT type="radio" name="cover" value="1500">編み込み楕円\1500<BR> <INPUT type="radio" name="cover" value="1000">蓋なしボックスレインボー1000円<br> <INPUT type="radio" name="cover" value="covered"><b>蓋付きのボックス</b> 色によって値段が変化します<br> <select class="linkage" name="color_of_cover" disabled> <OPTION value="0" selected>色を選択</OPTION> <OPTION value="39900">赤1000円</OPTION> <OPTION value="52500">青1000円</OPTION> <OPTION value="54600">金1100円</OPTION> </select><BR> <INPUT type="radio" name="cover" value="0"><b>蓋付きバスケット</b> 形によって値段が変化します<BR> <select name="sel1"> <OPTION value="0" selected>形を選択</OPTION> <OPTION value="1500">丸 1500円</OPTION> <OPTION value="1600">四角 1600円</OPTION> <OPTION value="1600">楕円 1600円</OPTION> </select> <br><hr><BR> <b>ご希望のオプションがあれば選択して下さい。(複数選択可)</b><BR> <INPUT type="checkbox" name="bx1" value="300">クッション材\300 <INPUT type="checkbox" name="bx1" value="200">飾り\200<BR> <INPUT type="checkbox" name="bx1" value="150">メッセージカード\150 <INPUT type="checkbox" name="bx1" value="2500">花束\2,500<BR> <BR> <hr> <input type="button" value="合計を出す" onClick="calc()"><br> 合計<input type="text" name="result"><br> </form> </body> </html>

  • ラジオボタンにあらかじめチェックする方法で・・

    HTMLから<input type="hidden">を使い、次ページのフォームのラジオボタン・リストボックス・チェックボックスの希望箇所に、あらかじめチェックの入った状態にしたいのですが、以下のソースだと当てはまらなかった箇所に対して膨大な量のNoticeが表示されてしまいます。 ▼HTML <form action="form1.php" method="post"> <input type="submit" value="フォームへ"> <input type="hidden" name="sele_mod" value="2"> <input type="hidden" name="sele_led" value="1"> </form> ▼form1.php $sele_mod[$_POST['sele_mod']]="checked"; $sele_cor[$_POST['sele_cor']]="selected"; echo <<<HTML <form action="" method="post"> 1:<br> <input type="radio" name="model" value="AAAA" $sele_mod[0]>YC702i<br> <input type="radio" name="model" value="BBBB" $sele_mod[1]>YC703i<br> <input type="radio" name="model" value="CCCC" $sele_mod[2]>YC902i<br> <input type="radio" name="model" value="DDDD" $sele_mod[3]>YC903i<br> <br> カラー:<br> <select name="color"> <option value="シルバー" $sele_cor[0]>シルバー</option> <option value="ブラック" $sele_cor[1]>ブラック</option> <option value="ホワイト" $sele_cor[2]>ホワイト</option> <option value="レッド" $sele_cor[3]>レッド</option> <option value="ブルー" $sele_cor[4]>ブルー</option> <option value="イエロー" $sele_cor[5]>イエロー</option> <option value="ライトグリーン" $sele_cor[6]>ライトグリーン</option> <option value="ワインレッド" $sele_cor[7]>ワインレッド</option> <option value="パープル" $sele_cor[8]>パープル</option> <option value="ライトブルー" $sele_cor[9]>ライトブルー</option> <option value="グリーン" $sele_cor[10]>グリーン</option> <option value="オレンジ" $sele_cor[11]>オレンジ</option> </select> HTML;  実際はもっとフォーム部品があるので、Noticeの数もかなり多いです・・・一応このソースでも望みの動作はするのですが、Noticeを出さずにするにはどう改善したら良いでしょうか?

    • ベストアンサー
    • PHP
  • PHPのjson_encode()

    御世話になります。 PHPからjson_encode() した配列をJavascriptに送って、javascript側ではJSON.parse()でデータを戻して使おうとしていますが、上手く行きません。 これは自作のカラオケシステムのプログラムで、歌手の名前を入力してボタンを押すと、MySQLデータベースに登録されたその歌手の曲がすべてセレクトリストに表示され、その中から一曲選択してその曲のカラオケが始まるという仕組みです。 以前には働いていたのですが、何かのきっかけでソースコードをいじっている間に働かなくなり、原因がわからないままいろやってみましたが(PHP側でjson-encode なしでやってみたり、javascript側でJSON.parse なしでやってみたり)、PHPの配列データをjavascript側にうまく渡せてないようです。ソースコードを添付しますので、どこがおかしいのかチェックして頂ける方がいらっしゃれば有難く思います、 どうかよろしくお願いいたします。 ちなみに、曲を選択するには他にもう一つの方法があり、曲の識別番号(Number)を入力する方法でこれはちゃんと働いています。 プログラムを走らせた、画面ショットも添付しておきます。 <!DOCTYPE HTML> <html> <head> <title> select_song.php</title> <?php $host = "localhost"; $user = "root"; $pass = "rsi2018"; $database = "karaoke"; $connection = mysqli_connect($host, $user, $pass, $database) or die("cannot connect to database"); //================ for all data ============= $numbers = array(); $titles = array(); $singers = array(); $query ="select number, title, singer from num2song where test<>'redundant' order by title"; // avoid redundant data $result= mysqli_query($connection, $query) or die("fail-1"); $i=0; while($row=mysqli_fetch_assoc($result)) { $numbers[$i]=$row['number']; $titles[$i] =$row['title']; $singers[$i]=$row['singer']; $i++; } $dataCount = $i; $JSnumber = json_encode($numbers); $JStitles = json_encode($titles); $JSsingers = json_encode($singers); ?> <script type="text/javascript"> var totalData = <?php echo $totalCount; ?>; var allNumbers = JSON.parse('<?php echo $JSnumbers; ?>'); var allTitles = JSON.parse('<?php echo $JStitles; ?>'); var allSingers = JSON.parse('<?php echo $JSsingers; ?>'); //============================ function showAllSongs(){ //============================= if(document.getElementById("songNumber").value){ document.getElementById("songNumber").value=""; } if(document.getElementById("mySelect")){ document.getElementById("selectSpace").innerHTML=""; } alert("inside showAllSongs"); alert(totalData); var kashu = document.getElementById("singer").value; alert(kashu); var myParent = document.getElementById("selectSpace"); var selectList = document.createElement("select"); selectList.id ="mySelect"; selectList.name ="mySelect"; myParent.appendChild(selectList); var opt = document.createElement("option"); opt.text = "==== 曲を選ぶ ===`"; opt.value = "dummy"; selectList.appendChild(opt); for(var i=0; i<totalData; i++){ if( allSingers[i].indexOf(kashu) >= 0){ var opt = document.createElement("option"); opt.text = allTitles[i]; opt.value = allNumbers[i]; selectList.appendChild(opt); }else{ continue; } }//for var select = document.getElementById("mySelect"); select.onchange=function(){ document.getElementById("selectNumber2").value = document.getElementById("mySelect").value; } }// function </script> </head> <body style="background-color:navy; color:white ;font-size:14pt"> <form method="POST" action="findsong.php" target="main"> Input song number <br> <input type="text" size="8" name="songnum" id="songNumber" style="font-size:12pt"> <input type="submit" value="Play music" style="font-size:12pt"> </form> <BR> <hr> <form method="POST" action="findsong.php" target="main"> Input singer name <BR> <input type="text" size="26" id="singer" name="singer" style="font-size:16pt"><br> <input type="hidden" name="songnum2" id="selectNumber2"> <input type="button" value="Show songs" onclick="showAllSongs()" style="height:40px;font-size:10pt"> <input type="submit" value="Play Music" style="height:40px;font-size:10pt"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • セレクトボックスで現在選択されている値

    下記のセレクトボックスがあります。  print "<select name='atai'>";  print "<option value='abc'>abc</option>";  print "<option value='123'>123</option>";  print "<option value='xyz'>xyz</option>";  print "</select>"; 現在、選択されている値を $int の変数に入力 したいのですが、どうしたらいいのでしょうか。 例えば、$int=・・・・・・; というふうに代入 文でできることなのでしょうか。   この場合、現在表示されているCGIで、 $int が、abc か 123 か xyz か知りたい のです。

    • ベストアンサー
    • Perl
  • JQueryを用いたJsonとの非同期通信について

    下のソース //画面構築完了後 $(function() { //ボタンのクリックイベントで $("#btn_1").click(function(){ //data/sample.jsonのデータを取得し、jsonというオブジェクトに入れる $.getJSON("fdas.json", function(json){ var rows = ""; //テーブルとして表示するため、htmlを構築 //for (i = 0; i < json.length; i++) { rows += "<tr>"; rows += "<td>"; for (var kaey in json) { rows += (json[kaey]); } rows += "</td>"; rows += "</tr>"; //} //テーブルに作成したhtmlを追加する $("#tbl").append(rows); }); }); }); このソースに <input id="btn_1" type="button" value="データ取得" /> を使ってボタンを押しているのですが、FirefoxだとJsonのデータを更新してから押してもデータが変更されず、ChromeだとF5とかを幼くても更新されます。 ブラウザによって挙動が違うのはソースが間違っているからですか? それともJsにもHTML5やCSS3のように、対応ブラウザなどがあるのでしょうか??? また自分はまだよくわかっていないのですが、prototype.jsを用いた場合のほうが簡単だということがありましたらそちらも教えていただけると幸いです 教えてください!!!