
AJAX+PHPでセレクトボックスの連動をしようとしています。
function SelAjax(){
var x = $('#category1').val();
$.ajax({
type: "POST",
url: "category.php",
data: {"prm":x},
dataType: "json",
success: function(data, status){
$.each(data,function(i) {$('#category2').append($('<option>').attr({ value: i }).text(data[i]));
});
},
error: function(XMLHttpRequest, status, errorThrown){
alert("エラーが発生しました!");
}
});
}
としています。
PHP側で
$CATEGORY2 = array(
1 => array(
1 => "a",
2 => "b",
3 => "c",
4 => "d",
),
2 => array(
1 => "e",
2 => "f",
3 => "g",
4 => "h",
),
3 => array(
1 => "i",
2 => "j",
3 => "k",
4 => "l",
),
4 => array(
1 => "m",
2 => "n",
3 => "o",
4 => "p",
),
5 => array(
1 => "q",
2 => "r",
),
6 => array(
1 => "s",
2 => "t",
3 => "u",
),
);
$ary = array();
if($_POST["prm"]){
for($i=1;$i<=6;$i++){
if($i ==$_POST["prm"] )
$ary = $CATEGORY2[$i];
}
}
echo json_encode($ary);
としています。
一回目に1番目のセレクトボックスを選択してAjaxでPOSTし2つ目のセレクトボックスを生成できました。
しかし、2回目として1番目のセレクトボックスを選択した際に、1回目にPHPから受け取った配列に積みあがってしまいます。
どのように対処すればいいかわかりません。
教えてください。
No.2ベストアンサー
- 回答日時:
No.1です。
おっと、複数<option>があるのでリプレースはだめですね。やはり全部削除してから追加ですね。
success: function(data, status){
$("#category2").empty();
$.each(data,function(i) { $('#category2').append($('<option>').attr({ value: i }).text(data[i]));
});
},
おお・・・
すばらしい!!
emptyっていうのがあったんですね。
感激しました。
javascriptで普通にonchangeでできないこともないのですが、敢えてajaxに挑戦してみました。
ありがとうございました。
あやうくノイローゼになりそうでした。(笑)
No.1
- 回答日時:
セレクトボックスのhtml部分が、掲載されてないので、
中途半端な解答ですが、
appendする前に、前にappendした<option>を削除していないから
積みあがっていくのだと思います。
jQueryだとリプレースのメソッドもあるので、
$.each(data,function(i) {
$('#category2 > option').replaceWith($('<option>').attr({ value: i }).text(data[i])
});
でどうでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 特定ウインドウ...
-
自作の地図をグーグルマップの...
-
GASでスプレッドシートの一番上...
-
Excxel vba でYahoo API で住所...
-
PDFを(htmlのように)無限に縦...
-
1枚の画像をクリックすると複数...
-
bxSliderで動画をスライドごと...
-
php コールバック関数
-
ナイトボットのAliasについて
-
これってなんの電話かわかりま...
-
VBAでクイズゲームの作り方
-
以下のURL入れますか?皆さんは↓
-
画像のドットの部分が抜けてい...
-
Chinapost こよパズルどう動か...
-
非同期通信で掲示板を作る際の...
-
非同期通信を使うタイミングが...
-
PYTHONのtkinterについて
-
Pythonのtkinterについて
-
Pythonを勉強する道のり
-
Pythonを無料(安価)で学ぶ方...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavascriptからPHPへのAjax通信...
-
jQuery を外部ファイルから呼び...
-
jQueryで外部テキストファイル...
-
jQueryを使いformでsubmitした...
-
AJAX+PHPでセレクトボックスの連動
-
Ajax サーバーに負荷かかります...
-
jQueryのblockUIをformのボタン...
-
ajaxを使ったページがSEOで不利...
-
ajaxでPHPにPOST送信して結果デ...
-
ajax + PHPによるエラーの返し...
-
ajaxでPHPにPOST送信して結果デ...
-
ajaxからphpにpsotしたときの日...
-
jquery,ajaxによるphp通信でnull
-
Ajax を Fetch API に 書き換え...
-
IE8 form action属性をはずす...
-
JQueryの変数の扱いで弱ってい...
-
Ajaxでフォームデータを連続登...
-
jQuery3 reset()が効かない。
-
jqueryでAJAX非同期通信をしてp...
-
Ajax・jQueryでGETとPOSTする方法
おすすめ情報