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?
À partir de la documentation jQuery pour
processData
:Source: http://api.jquery.com/jquery.ajax
Il semble que vous allez devoir utiliser
processData
pour envoyer vos données au serveur, ou modifier votre script php pour prendre en charge les paramètres encodés de la chaîne de requête.la source
J'obtenais cette erreur lors de la publication d'un objet FormData car je ne configurais pas correctement l'appel ajax. La configuration ci-dessous a résolu mon problème.
la source
Ceci est un objet pas un tableau:
Vous voulez probablement:
la source
$_GET
tableau côté serveur (var_export($_GET)
sortiesarray ( 'undefined' => 'undefined', )
)$.ajax
gestionnaire:type:'get',
data
clés doivent être trouvées dans le tableau GET, non? Ou peut-être qu'ils sont envoyés via une autre méthode de demande de toute façon?data: {foo:'myfoo', bar:'mybar'}
, il pourrait y avoir un autre problème, je pense.e[e.selectedIndex]
alors que j'aurais dû passer sa valeure[e.selectedIndex].value
. Après avoir corrigé cette faille, la notation objet fonctionne correctement.A eu le même problème récemment, résolu en ajoutant
traditional: true,
la source
la source
contentType
etprocessData
, l'erreur continuera à s'afficher. J'ai ajouté les deux champs et cela a fonctionné pour moi. Je pense qu'op essayait d'indiquer les deux domaines importants.la source
Essaye ça:
la source