Mam dwa wybrane elementy, A i B: kiedy wybrana opcja A ulegnie zmianie, opcje B. muszą zostać odpowiednio zaktualizowane. Każdy element w A implikuje wiele elementów w B, jest to relacja jeden do wielu (A zawiera narody, B powinno zawierać miasta znajdujące się w danej nacji).
Funkcja do_ajax
powinna uruchomić żądanie asynchroniczne:
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: mydata,
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
Aby zaktualizować opcje B, dodałem wywołanie funkcji w onChange
zdarzeniu A. Oto funkcja, która działa po wyzwoleniu zdarzenia onChange (of A
):
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');
}
}
Czytałem w dokumentach JQuery, że data
może to być tablica (pary klucz-wartość). Otrzymuję błąd, jeśli wstawię:
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
Zamiast tego nie otrzymuję tego błędu, jeśli moje dane są ciągiem:
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
Ale potrzebuję "wersji tablicowej" zmiennej w moim kodzie PHP po stronie serwera.
Uncaught TypeError: Illegal invocation
Znajduje się w „jQuery 1.7.2.min.js” pliku, który jest cały sprężonego, więc nie mogłem dowiedzieć się, jaka część kodu podniesiony błąd.
Czy jest jakieś ustawienie, które mogę zmienić w moim kodzie, aby akceptował dane jako tablicę asocjacyjną?