Back to top

Autore Topic: Elaborare JSON su risposta AJAX  (Letto 1450 volte)

Offline Alhazred

  • Appassionato
  • ***
  • Post: 289
    • Mostra profilo
Elaborare JSON su risposta AJAX
« il: 16 Set 2011, 18:15:48 »
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)
Codice: [Seleziona]
[ {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
Codice: [Seleziona]
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?

 



Web Design Bolzano Kreatif