Tengo dos elementos seleccionados, A y B: cuando la opción seleccionada de A cambia, las opciones de B deben actualizarse en consecuencia. Cada elemento en A implica muchos elementos en B, es una relación de uno a muchos (A contiene naciones, B debe contener ciudades ubicadas en la nación dada).
La función do_ajax
debe ejecutar la solicitud asincrónica:
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: mydata,
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
Para actualizar las opciones de B, agregué una llamada de función en el onChange
evento de A. Aquí está la función que se ejecuta cuando se activa el evento onChange (of 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');
}
}
He leído en documentos de JQuery que data
pueden ser una matriz (pares clave-valor). Me sale el error si pongo:
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
En cambio, no obtengo ese error si mis datos son una cadena:
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
Pero necesito la "versión de matriz" de la variable, en mi código php del lado del servidor.
los Uncaught TypeError: Illegal invocation
encuentra en el archivo "jquery-1.7.2.min.js", que está totalmente comprimido, por lo que no pude averiguar qué parte del código generó el error.
¿Hay alguna configuración que pueda cambiar en mi código para que acepte datos como una matriz asociativa?