JQuery: 'Uncaught TypeError: Illegaler Aufruf' bei Ajax-Anforderung - mehrere Elemente

Ich habe zwei Auswahlelemente, A und B: Wenn sich die ausgewählte Option von A ändert, müssen die Optionen von B entsprechend aktualisiert werden. Jedes Element in A impliziert viele Elemente in B, es ist eine Eins-zu-Viele-Beziehung (A enthält Nationen, B sollte Städte enthalten, die sich in der gegebenen Nation befinden).

Die Funktiondo_ajax sollte die asynchrone Anforderung ausführen:

function do_ajax(elem, mydata, filename)
{
    $.ajax({
        url: filename,
        context: elem,
        data: mydata,
        datatype: "html",
        success: function (data, textStatus, xhr) {
            elem.innerHTML = data;
        }
    });
}

Um die Optionen von B zu aktualisieren, habe ich in A einen Funktionsaufruf eingefügtonChange Veranstaltung. Hier ist die Funktion, die ausgeführt wird, wenn das Ereignis onChange (vonA) wird ausgelöst:

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');
}

}

Ich habe eingelesenJQuery-Dokumente Dasdata kann ein Array sein (Schlüsselwertpaare). Ich erhalte den Fehler, wenn ich sage:

var data = {
        'mode': 'filter_city',
        'id_A': e[e.selectedIndex]
};

Stattdessen erhalte ich diesen Fehler nicht, wenn meine Daten eine Zeichenfolge sind:

var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];

Aber ich brauche die "Array-Version" der Variablen in meinem serverseitigen PHP-Code.

DasUncaught TypeError: Illegal invocation befindet sich in der Datei "jquery-1.7.2.min.js", die alle komprimiert ist, sodass ich nicht herausfinden konnte, welcher Teil des Codes den Fehler ausgelöst hat.

Gibt es eine Einstellung, die ich in meinem Code ändern kann, damit er Daten als assoziatives Array akzeptiert?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage