[LatinaLUG] jquey e ajax

Jusi Pomenti jusipom@gmail.com
Mer 10 Feb 2016 13:35:57 CET


ciao a tutti,
è      la prima volta  che affronto un problema del genere e ho poca 
familiarità con jquery e ajax.Non vi invio tutto il codice che,oltre  ad 
essere diviso  in file,è anche piuttosto lungo e,in poche 
parole,funziona  cosi':
Ho 4 select con id da 0 a 3. Quando l'utente cambia il valore della 
select 0,vengono impostati alcuni parametri per operare sulla select 1 e 
con questi si esegue una richiesta AJAX con il metodo GET che popola la 
select con id 1.
Stesso discorso quando cambia l'opzione nella select 2;ovviamente,in 
questo caso,viene popolata la select 3 La mia impressione è che non 
chiami lo script. Questa è la pagina iniziale:
-------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jquery e ajax</title>
<script src="jquery-1.8-0.min.js" language="javascript" 
type="text/javascript"></script>
<script language="javascript" type="text/javascript">

$(document).ready(function() {

     // verifico  quale select ha cambiato  valore e setto,di 
conseguenza,la select da aggiornare
     $('select').each(function(){
         $(this).change(function() {
              var list_select_id=$(this).attr('id');    // ID select che 
ha cambiato valore
              var selectvalue = $(this).val(); // valore selezionato
              var par; // parametri
              var initial_target_html; // prima opzione
              switch (list_select_id)
              {
                  case 0:
                     list_target_id='#1';
                     initial_target_html = '<option value="0">Seleziona 
una categoria</option>';
                     par='id_cat='+seletvalue;
                     break;
                 case 2:
                     list_target_id='#3';
                     initial_target_html = "<option value='0'>Seleziona 
un'area/option>";
                     par='id_area' + seletvalue;
                     break;
              }

  alert(list_target+" - "+par);
              $(list_target_id).html(initial_target_html); // inserisce 
la prima opzione nel secondoo menù

              $('#'+list_select_id).change(function(e) {
                  // visuualizza un messagio in attesa di caricaree u  dati
                  $(list_target_id).html('<option value="0">Sto 
caricando</option>');
                  //if-else
                  if (selectvalue == "") {
                      // Se non è selezionata um'opzione nel primo 
menù,neò secondo viene visualizzata la prima opzione
                      $(list_target_id).html(initial_target_html);
                  } else {
                      // richiest AJAX con GET
                      $.ajax({url: 'ajax-scat.php?'+ par,
                          success: function(output) {
                              // visualizza le opzioni in caso di successo
                              $(list_target_id).html(output);
                          },
                          error: function (xhr, ajaxOptions, thrownError) {
                              // visualizza eventuali errori
                              alert(xhr.status + " "+ thrownError);
                          }
                      }); // chiudo $.ajax
                  } //if-else
              }); // chiudo $(list_select_id).change(

         });// chiudo $(this).change(
     });// chiudo $('select').each(

}); //chiudo ready

</script>
</head>
<body>
<div style='position:absolute; top:150px; left:100px; width:900px; 
height:200px'>
<?php
   include ("config_db.php");  // funzioni per la connessione al db
   include ("php_html.php");   // scrive codice html tramite php
   $db=connect();
   $m_cat=crea_menu($db,"categorie","cat","index.php",0,0,"cat");
   $m_area=crea_menu($db,"area","area","index.php",0,2,"area");
   mysql_close($db);
   $m_scat=crea_menu_nill(1,"scat");
   $m_uff=crea_menu_nill(3,"uff");
   $s="<form  name='ins' method='post' action=''>";
   $s.="<table width='100%'>";
   $s.="<tr height=50>";
   $s.=ins_menu("Categoria :","5%",1,$m_cat,"30%",1,"top","","","",0);
   $s.=ins_menu("Sottocategoria :","5%",1,$m_scat,"30%",1,"top","","","",0);
   $s.="</tr>";
   $s.="<tr height=50>";
   $s.=ins_menu("Area :","5%",1,$m_area,"30%",1,"top","","","",0);
   $s.=ins_menu("Ufficio :","5%",1,$m_uff,"30%",1,"top","","","",0);

   $s.="</tr></table>";

   $s.=ins_submit();
   $s.="</form>";
   echo $s;

?>
</div>
</body>
</html>
----------------------------------------------
dove  sbaglio?
Ciao e grazie



Maggiori informazioni sulla lista latina