AとBの2つの選択要素があります。Aの選択されたオプションが変更されると、それに応じてBのオプションを更新する必要があります。Aの各要素はBの多くの要素を意味します。これは1対多の関係です(Aには国が含まれ、Bには指定された国にある都市が含まれる必要があります)。
関数do_ajax
は非同期リクエストを実行する必要があります。
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: mydata,
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
Bのオプションを更新するために、AのonChange
イベントに関数呼び出しを追加しました。これは、(のA
)onChangeイベントがトリガーされたときに実行される関数です。
function my_onchange(e) // "e" is element "A"
{
var sel_B = ... ; // get select element "B"
// I skipped some code here
// ...
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
do_ajax(city_sel, data, 'ajax_handler.php');
}
}
配列(キーと値のペア)の可能性があるJQueryドキュメントを読みましたdata
。私が置くとエラーが出ます:
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
代わりに、データが文字列の場合、そのエラーは発生しません。
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
しかし、サーバー側のphpコードに、変数の「配列バージョン」が必要です。
の Uncaught TypeError: Illegal invocation
は「jquery-1.7.2.min.js」ファイルにあり、すべて圧縮されているため、コードのどの部分でエラーが発生したのかわかりませんでした。
データを連想配列として受け入れるようにコードで変更できる設定はありますか?