JQuery: «Uncaught TypeError: незаконный вызов» при запросе ajax - несколько элементов
У меня есть два элемента выбора, 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, я добавил вызов функции в 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 документы тотdata
может быть массивом (пары ключ-значение). Я получаю ошибку, если я положил:
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
Вместо этого я не получаю эту ошибку, если мои данные представляют собой строку:
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
Но мне нужна & quot; версия массива & quot; переменной, в моем PHP-коде на стороне сервера.
Uncaught TypeError: Illegal invocation
находится в & quot; jquery-1.7.2.min.js & quot; файл, который полностью сжат, поэтому я не могу понять, какая часть кода вызвала ошибку.
Есть ли какие-либо настройки, которые я могу изменить в своем коде, чтобы он принимал данные как ассоциативный массив?