У меня есть два элемента select: A и B: при выборе выбранной опции, опции 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, я добавил вызов функции в событие A onChange
. Вот функция, которая запускается при запуске события 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 docs, что 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, который все сжат, поэтому я не мог понять, какая часть кода подняла ошибку.
Есть ли какой-либо параметр, который я могу изменить в своем коде, чтобы он принимал данные как ассоциативный массив?