İki seçme öğem var, A ve B: A'nın seçili seçeneği değiştiğinde, B'nin seçenekleri buna göre güncellenmelidir. A'daki her öğe, B'deki birçok unsuru ifade eder, bu bire çok ilişkidir (A ulusları içerir, B verilen ulusta bulunan şehirleri içermelidir).
İşlev do_ajax
, eşzamansız isteği çalıştırmalıdır:
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: mydata,
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
B'nin seçeneklerini güncellemek için A'nın onChange
etkinliğine bir işlev çağrısı ekledim . OnChange olayı (of A
) tetiklendiğinde çalışan işlev şu şekildedir :
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');
}
}
İçinde okuduğunuz JQuery dokümanlardata
bir dizi (anahtar değeri çifti) olabilir. Eğer koyarsam hatayı alıyorum:
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
Bunun yerine, verilerim bir dizeyse bu hatayı almıyorum:
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
Ancak, sunucu tarafı php kodumda değişkenin "dizi sürümüne" ihtiyacım var.
Uncaught TypeError: Illegal invocation
Ben kod parçası hata geçirilen anlamaya could not nedenle, tüm sıkıştırılır "jquery-1.7.2.min.js" dosyasında yer almaktadır.
Kodumda verileri ilişkilendirilebilir dizi olarak kabul edecek şekilde değiştirebileceğim herhangi bir ayar var mı?