Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [jquery ajax] cambio valore al volo.

    Salve a tutti, ho fatto uno script per cambiare al volo un campo di una tabella senza cambiare la pagina, con jquery e ajax.
    Nella pagina, a fine di ciascun record, ho un pulsante che indica lo sblocco o il blocco di una risorsa, se dalla tabella mysql il valore è null signifca che la risorsa è bloccata, altrimenti è libera.
    Per fare ciò ho fatto la prima cosa che mi veniva in mente, allestire un form in una cella della tabella, ecco il codice:

    codice HTML:
    <?php
    while($row = mysql_fetch_array($result)) {
        ?>
    <td width="5%" align="center">
      <div id="stato_blocco"><?=$row['id']?><form name="formsb" id="formsb">
      <?php if ($row['blocco'] != "" or $row['blocco'] != null){ ?> 
      <input type="hidden" id="stato" value = "null" />
      <input type="hidden" id="idSblocco" value = "<?=$row['id']?>" />
      <input name="Invia" type="submit" id="blocco" value="blocco"/> 
      <?php }else{ ?>
      <input type="hidden" id="stato" value="" />
      <input type="hidden" id="idSblocco" value = "<?=$row['id']?>" />
      <input name="Invia" type="submit" id="blocco" value="sblocco"/>
      <?php } ?>
      </form></div>
      </td>
    <?php
    }
    ?>
    questo codice restituisce un pulsante submit e due valori nascosti per ciascun risultato, alla pressione del pulsante se la risorsa e bloccata verrrà sbloccata e viceversa, per fare ciò mi nella sezione head ho messo uno script
    codice HTML:
    <script src="/jquery/1.10.2/jquery.min.js"></script>
    Ultima modifica di DarioMarco; 28-03-2015 a 06:30

  2. #2
    codice HTML:
    <script src="/jquery/1.10.2/jquery.min.js"></script>
    <script>
    $(document).ready(function(){  
    
        
        // script per sbloccare
    $("#formsb").submit(function(){
    var idSblocco = $("#idSblocco").val();
    var stato = $("#stato").val();
    
    alert(idSblocco);
    
    $.post("sblocca.php",{ id1: idSblocco, stato1:stato},
                function(data) {
                    $("#stato_blocco").html(data);
                //alert(data);
                });
        
        
        return false;
    });    
    //fine
    });  
    // -- fine codice sblocco
    </script>
    Questo script funziona solo con il primo record, ma dal secondo in poi effettua il submit come un normale form facendo il refresh della pagina, vorrei chiedere se esiste una soluzione per indicare quale record deve puntare visto che i div dei record hanno tutti lo stesso id stato_blocco, come il nome del form formSblocco.
    La seconda invece è una richiesta, se è possibile semplificare il codice togliendo il form, ma inserendo un immagine di un lucchetto che cliccandolo si attivi la funzione di blocco / sblocco.
    Grazie in anticipo a tutti quelli che hanno la pazienza di visionare lo script

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    A) gli ​ID devono essere univoci (altrimenti rileverà solo il primo) per renderli dinamici o metti un contatore esterno al ciclo while e lo incrementi al sui inteno, oppure usi id del record
    B) per passare id la soluzione più rapida e usare onclick in linea direttamente nel pulsante (button eliminando tutti i form)
    C) sicuro che serva una chiamata Ajax se lo stato è null?

    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Ciao Cavicchiandrea, grazie per la tua risposta,
    A. per il form dinamico posso fare come mi hai suggerito, ovvero:
    codice HTML:
    <div id="stato_blocco_<?=$row['id']?>">
    e via dicendo per tutti gli id univoci, ma per passare il valore dell'id univoco alla funzione come dovrei fare?

    B. Era una mezza idea, ma non so come passare i due valori perchè nel form ho due valori nascosti, id e stato.

    C. Diciamo che è stata la mia prima idea che ho avuto, nel databse mysql il valore di default del campo è null, (potrei mettere anche true e false) l'importante che possa fare un operazione di switch tra i due valori. Se hai una soluzione migliore sono felicissimo di ascoltarla.

    Grazie di nuovo

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    A) Ok
    B) <input name="Invia" type="button" id="blocco_<?=$row['id']?>" value="blocco" onclick="TuaFunzioneAjax('stato_blocco_<?=$row['id']?>','<?=$row['blocco']?>')"/> <-- gradi linee
    C) intendo dire che se il valore è nullo ha un senso eseguire una chiamata ajax
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Grazie cavicchiandrea, riporto lo script semplificato al massimo, ho usato un pulsante che tramite onclick passo i due parametri, e qui ne riporto la funzione, che funziona se ci fosse qualcos'altro da correggere sarei felice di apprendere qualcosa in più.

    codice:
    function sblocca (id,blocco) {
    
    $.post("sblocca.php?id="+id+"&stato="+blocco,
                function(data) {    
                    $("#blocco_"+id).attr("src", data);
                });
          
        return false;
        
    }
    Grazie, ciao.

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.