У мене є два елементи вибору, A і B: коли вибраний варіант A змінюється, параметри B повинні бути оновлені відповідно. Кожен елемент A передбачає багато елементів у B, це відносини один до багатьох (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, я додав виклик функції в onChange
події A. Ось функція, яка запускається при запуску onChange події (з 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');
}
}
Я читав у документах 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», який все стискається, так що я не міг зрозуміти, яка частина коду підняв помилку.
Чи можу я змінити свій код у своєму коді, щоб він приймав дані як асоціативний масив?