JSONは生きていた
ページを開いたときに、表示すべきデータがあるかどうかチェックして、その結果に応じてSELECTの項目を作る。
データベースを用意するのが面倒なので、絶対に値を返すようにする。
とりあえず形式はJSON形式で。
まずはPHPから。
// テキトーだけど $first_array = array( array('name' => 'test1', 'code' => 1) , array('name' => 'test2', 'code' => 2) , array('name' => 'test3', 'code' => 3) , array('name' => 'test4', 'code' => 4) , array('name' => 'test5', 'code' => 5) , array('name' => 'test6', 'code' => 6) , array('name' => 'test7', 'code' => 7) , array('name' => 'test8', 'code' => 8) , array('name' => 'test9', 'code' => 9) ); // JSON形式で返す(出力する) echo json_encode($first_array);
returnじゃなくてecho()でないと値を取得できないってのは、どうなんだろう?
でもってHTML側(JavaScript)ね。
イメージ的には、既にあるid属性が「test」のselectに追加するカンジ。
test.pnpってのは、上に書いた内容が書かれてるPHPファイルね。
$(document).ready(function(){ $.post("./test.php", "", function(result){ var firstData = JSON.parse(result); jQuery.each(firstData, function(){ $('#test').append($('<option>').attr({ value: this.code }).text(this.name)); }); }); });
jQuery.each()でループが簡単なのは便利だ。
.append()もなかなかだけど、わざわざ「<>」でくくる必要があるのはなぁ…
ソースを確認すると、こんなふう。
<SELECT id=test size=4 jQueryNNNNNNNNNNNNN="2"> <OPTION value=1>test1</OPTION> <OPTION value=2>test2</OPTION> <OPTION value=3>test3</OPTION> <OPTION value=4>test4</OPTION> <OPTION value=5>test5</OPTION> <OPTION value=6>test6</OPTION> <OPTION value=7>test7</OPTION> <OPTION value=8>test8</OPTION> <OPTION value=9>test9</OPTION> </SELECT>
「jQueryNNNNNNNNNNNNN="2"」(Nは半角数字)ってなんだ!?
怖いから伏せておいたけど。