Salve a tutti.
Il mio problema è questo:
ho due dropdownlist che si popolano in cascata,
la prima è la classica country che viene pre-popolata all'apertura della pagina,
la seconda dipendente dalla prima viene popolata tramite una richiesta JSON.
Ecco il codice :
codice:
<select onchange='javascript:getItems(this.value,"/json/listitem","id_elemento");' id="country">
e la funzione
codice:
function getItems(id,url,type){
var url = url;
var type = type;
$.getJSON(url,{id:id},function (response){
$("#"+type).empty() $("#"+type+"").append($('<option></option>').val('').html(''));
$.each(response.items, function(i) {
$("#"+type+"").append($('<option></option>').val(response.items[i].key).html(response.items[i].value));
});
});
}
Il file JSON viene generato da uno script php a seguito di una query al DB.
Nessun errore viene riscontrato dal debugger, ma il browser si blocca per qualche secondo poi popola corretamente la lista.
Secondo voi, qual'è il motivo del blocco del browser?
Troppi dati?
La tabella in cui i dati vengono ricercati ha più di 50.000 record e il risultato della query al Db potrebbe essere una grossa fetta di questi (dell'ordine di 8000 e più)
La richiesta diretta allo script che genera il JSON non ha un grosso ritardo (circa 1.3 sec)
Ho provato in tutti i modi, il ritardo non è:
- nella funzione di callback della richiesta (ho provato a commentarla, il problema persiste)
- nella creazione del file JSON e quindi nella query al DB ( ho provato a indirizzare la richiesta direttamente al file json generato e non allo script che lo genera, il problema persiste)
- colpa del browser? succede con FF, IE e Chrome
Come posso risolvere?