Sul frontend del mio componente ho una form con alcuni campi select.
Le option di alcuni di questi campi sono legati gli uni agli altri.
Vorrei fare in modo che selezionando un'opzione da una select, le opzioni di quella ad essa legata vengano ripopolate al volo.
Per fare questo sto ovviamente usando AJAX, ma sto riscontrando un problema.
La funzione AJAX invia correttamente la richiesta, risponde una funzione che ho messo nel controller.php, questa elabora i dati e restituisce il risultato in formato JSON.
Tutto questo funziona, perché se stampo il responseText, dentro ci trovo i dati in formato JSON.
Adesso viene il problema.
Questo è ciò che ricevo in risposta dal controller (stampato con innerHTML in un div di prova)
[ {id:"1", formato:"A4", h:"297", l:"210",}, {id:"2", formato:"A5", h:"210", l:"148",}, {id:"3", formato:"A6", h:"148", l:"105",} ]
Il codice con cui invece provo ad elaborare la risposta è questo
if (mypostrequest.status == 200 || window.location.href.indexOf("http") == -1)
{
var json = mypostrequest.responseText;
var arr = eval(json);
var result = '';
for(var i=0;i<arr.length;i++){
result += "id: "+arr[i].id+" - formato: "+arr[i].formato+" - h: "+arr[i].h+" - l: "+arr[i].l+"[br /]";
}
document.getElementById("risultatopreventivo").innerHTML = result;
}
Questo non funziona, si blocca all'esecuzione della eval(json)
Se però copio l'output che ricevo e lo assegno direttamente alla variabile json nella funzione javascript, la eval() funziona ed i dati vengono stampati regolarmente.
In pratica pare che la stringa ricevuta in risposta dalla funzione nel controller non sia accettata dalla eval().
Avete idea del perché di questo comportamento? Come posso risolvere?