JQuery: „Uncaught TypeError: Illegal invocation” na żądanie ajax - kilka elementów
Mam dwa wybrane elementy, A i B: kiedy zmieni się wybrana opcja A, opcje B muszą zostać odpowiednio zaktualizowane. Każdy element w A oznacza wiele elementów w B, jest to relacja jeden-do-wielu (A zawiera narody, B powinno zawierać miasta znajdujące się w danym kraju).
Funkcjado_ajax
powinien 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 A'sonChange
zdarzenie. Oto funkcja, która działa, gdy zdarzenie onChange (zA
) jest uruchamiany:
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');
}
}
PrzeczytałemDokumenty JQuery żedata
może być tablicą (pary kluczowych wartości). Dostaję błąd, jeśli umieściłem:
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
Zamiast tego nie otrzymuję tego błędu, jeśli moje dane są łańcuchem:
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
Ale potrzebuję „wersji tablicowej” zmiennej w moim kodzie php po stronie serwera.
TheUncaught TypeError: Illegal invocation
znajduje się w pliku „jquery-1.7.2.min.js”, który jest skompresowany, więc nie mogłem zrozumieć, która część kodu spowodowała błąd.
Czy jest jakieś ustawienie, które mogę zmienić w moim kodzie, aby akceptował dane jako tablicę asocjacyjną?