Ho due elementi select, A e B: quando l'opzione selezionata di A cambia, le opzioni di B devono essere aggiornate di conseguenza. Ogni elemento in A implica molti elementi in B, è una relazione uno-a-molti (A contiene nazioni, B dovrebbe contenere città situate nella nazione data).JQuery: 'Uncaught TypeError: invocation illegale' su richiesta jax quando il parametro data è array
La funzione do_ajax
dovrebbe eseguire la richiesta asincrona:
function do_ajax(elem, mydata, filename)
{
$.ajax({
url: filename,
context: elem,
data: mydata,
datatype: "html",
success: function (data, textStatus, xhr) {
elem.innerHTML = data;
}
});
}
Al fine di aggiornare le opzioni di B. Ho una chiamata di funzione nel caso di un onChange
. Qui è la funzione che viene eseguito quando viene attivato evento onChange (di 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');
}
}
ho letto in JQuery docs che data
può essere un array (coppie di valori chiave). Ottengo l'errore se metto:
var data = {
'mode': 'filter_city',
'id_A': e[e.selectedIndex]
};
Invece, non ottengo questo errore se il mio dati è una stringa:
var data = 'mode=filter_city&id_A=' + e[e.selectedIndex];
Ma ho bisogno la "versione allineamento" della variabile, nel mio codice php lato server.
Il Uncaught TypeError: Illegal invocation
si trova nel file "jquery-1.7.2.min.js", che è tutto compresso, quindi non ho potuto capire quale parte di codice ha generato l'errore.
C'è qualche impostazione che posso modificare nel mio codice in modo che accetti i dati come array associativo?
+1 a te ... :-) – Sarfraz
Mi hai salvato come ... un milione di ore. Grazie! –
esattamente quello che stavo facendo. Ho dimenticato di usare .val() –