Saya memiliki dua elemen terpilih, A dan B: ketika opsi yang dipilih A berubah, opsi B harus diperbarui. Setiap elemen di A menyiratkan banyak elemen di B, ini adalah hubungan satu-ke-banyak (A berisi negara, B harus berisi kota yang terletak di negara tertentu).
Fungsi tersebut do_ajaxharus menjalankan permintaan asinkron:
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: mydata,
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
Untuk memperbarui opsi B saya telah menambahkan panggilan fungsi di onChangeacara A. Berikut adalah fungsi yang berjalan saat event onChange (of A) dipicu:
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');
}
}
Saya telah membaca di dokumen JQuery yang databisa berupa array (pasangan nilai kunci). Saya mendapatkan kesalahan jika saya meletakkan:
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
Sebaliknya, saya tidak mendapatkan kesalahan itu jika data saya adalah string:
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
Tetapi saya membutuhkan "versi array" dari variabel tersebut, dalam kode php sisi server saya.
Itu Uncaught TypeError: Illegal invocationterletak di file "jquery-1.7.2.min.js", yang semuanya dikompresi, jadi saya tidak tahu bagian mana dari kode yang memunculkan kesalahan.
Apakah ada pengaturan yang dapat saya ubah dalam kode saya sehingga menerima data sebagai array asosiatif?