J'ai deux éléments de sélection, A et B: lorsque l'option sélectionnée par A change, les options de B doivent être mises à jour en conséquence. Chaque élément dans A implique de nombreux éléments dans B, c'est une relation un-à-plusieurs (A contient des nations, B devrait contenir des villes situées dans la nation donnée).
La fonction do_ajax
doit exécuter la requête asynchrone:
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: mydata,
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
Afin de mettre à jour les options de B, j'ai ajouté un appel de fonction dans l' onChange
événement de A. Voici la fonction qui s'exécute lorsque l'événement onChange (of A
) est déclenché:
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');
}
}
J'ai lu dans des documents JQuery qui data
peuvent être un tableau (paires clé / valeur). J'obtiens l'erreur si je mets:
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
Au lieu de cela, je n'obtiens pas cette erreur si mes données sont une chaîne:
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
Mais j'ai besoin de la "version tableau" de la variable, dans mon code php côté serveur.
Le Uncaught TypeError: Illegal invocation
se trouve dans le fichier "jquery-1.7.2.min.js", qui est entièrement compressé, donc je n'ai pas pu déterminer quelle partie du code a provoqué l'erreur.
Y a-t-il un paramètre que je peux modifier dans mon code pour qu'il accepte les données sous forme de tableau associatif?