Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371

    select dinamica LENTISSIMA!!!!!

    Salve ragazzi come da titolo carico una select dinamicamente con ajax, consideriamo che la select ha circa 2500 record ma a caricarsi impiega più di 10 secondi , secondo voi è normale ??? secondo me è dato dal fatto dei 2 cicli eseguiti per caricare array e poi per caricare "option"
    cosa posso fare per velocizzarla??? vi lascio parte del codice cosi che possiate dare un'occhiata...
    html
    codice:
    <select name="sel_articoli" id="sel_articoli" data-placeholder="Seleziona Articolo" class="chosen-demo form-control"><option value=""></option></select>
    js
    codice:
    $.ajax({
           url:'php/ajax_articoli.php',
           data: {Tipo_Sel: "SEL-PREF"},
           type:"POST",
           dataType: 'json',
           success: function(data){
                  var $i=0;
                  $.each(data,function(key,val){                  
                      $("#sel_articoli").append('<option value="'+val.id+'">'+val.codice+" - "+val.descrizione+'</option>').trigger("chosen:updated");
                      if (val.id_pref==1){
                        $('#sel_articoli option:last').addClass('select-pref');
                        if ($i==0){
                          $("#sel_articoli").val(val.id);
                          $i+=1;
                        }
                      }
                  })
                  $("#sel_articoli").append('<option value="0">Nessuna Selezione</option>').trigger("chosen:updated");
                  //controllo se ha un valore di default e lo imposto
                  if (isEmpty(iid)){
                    //altrimenti lo metto vuoto
                    if ($i==0){
                      $("#sel_articoli").val(0);
                    }
                  }
                  else
                  {
                    $("#sel_articoli").val(iid);
                  }
              }
         });
    }
    php
    codice:
    if ($_POST["Tipo_Sel"] == "SEL-PREF")
    {
    $query = "SELECT *
              FROM tb_articoli
              WHERE tb_articoli.id_del<>1
              ORDER BY id_Pref DESC, codice ASC";
              $result = mysqli_query($connect, $query);
            if ($result->num_rows > 0) {
               while($row = $result->fetch_assoc()) {
                     $data[]=$row;
                     }
                     echo json_encode($data);
             }
           else{
           	    $array_text["msg"]= "Nessun Dato";
    	          $array_text["status"]= "error";
    	          echo json_encode($array_text);
           }
    }

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, diciamo che un menu a tendina da 2500 non e' proprio la cosa ideale. In un caso del genere si dovrebbe piuttosto usare un autocomplete e gestire la query lato server per eseguire una ricerca (oppure per default far ritornare solo i primi N risultati).
    Per capire se lento per via della query o del rendering basta guardare in console nel tab Network e verificare quanto tempo impiega il server a ritornare i dati.

  3. #3
    Utente di HTML.it L'avatar di stoneweb
    Registrato dal
    Jul 2016
    residenza
    Torino
    Messaggi
    165
    Hai verificato che non sia lenta la parte di php, magari?
    Prova con Postman a effettuare la stessa chiamata e vedi quanto tempo ci mette, almeno inizi ad escludere una potenziale parte del problema
    Work hard. Code harder.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    grazie, io avevo optato per una select chosen con ricerca
    $("#sel_articoli").chosen({ no_results_text: "Oops, nothing found!",
    disable_search_threshold: 10,
    search_contains:false,
    width:"100%"
    });
    il tempo che mi chiedevi dovrebbe essere questo .... giusto ??ajax_articoli.png
    hai un esempio di autocomplete ???
    Postman non lo conosco. SO CURIOSO ORA VEDO....
    Grazie per le risposte

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    371
    Ho provato con POSTMAN il file php e mi dice (Status 200 OK) (Time:104 ms) (Size:179.1 KB),
    sembra abbastanza veloce a creare risposta...
    [/COLOR]

  6. #6
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    La chiamata presumo sia questa php/ajax_articoli.php
    Per capire se e' il rendering a rallentare il tutto (la generazione delle options) prova banalmente a limitare il ciclo ad una decina di options. Dovresti accorgerti subito.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.