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ą?

questionAnswers(8)

yourAnswerToTheQuestion