Codice JSON di ritorno

  • Creatore Discussione Creatore Discussione Vera
  • Data di inizio Data di inizio

Vera

Utente Attivo
3 Giu 2014
76
1
8
Buongiorno mi occorre un vostro aiuto:

ho una semplice tabella di due colonne dentro l'HTML e ogni riga di questa tabella ha un bottone di selezione della riga stessa per l'eventuale modifica dei valori. La tabella viene caricata leggendo un db.
Alla pressione del bottone per la modifica chiamo un javascript che chiama a sua volta il php di modifica valori nel db e poi senza ricaricare tutta la tabella, aggiorna la semplice riga della tabella con codice JSON. La rivisualizzazione della tabella é corretta, cioé con i nuovi valori aggiornati, ma se vado a selezionare la stessa riga di valori, con il bottone, gli stessi non sono quelli aggiornati ma mi vengono visualizzati con il valore del primo aggiornamento. Ripeto il db viene aggiornato correttamente.

Ad esempio: ho due percentuali (caricate nella singola riga della tabella) che hanno i seguenti valori:
45,00 e 68,00 (sono dati a caso), con l'operazione di aggiornamento mi viene aggiornato il db con i nuovi valori che ho dato, 47,00 e 70,00 ma se poi vado a riselezionare la stessa riga della tabella mi vengono proposti i valori prima dell'aggiornamento e cioé 45,00 e 68,00.

Detto questo vi posto il relativo codice HTML e JAVASCRIPT:

HTML:
<button type="button" id="btnChange" value="btnChange" onclick="selectRecordCA(
                                                                                                                  
                                                                                                                   '<?php echo $infoDatiCA[$i]['PCRISU']; ?>',
                                                                                                                   '<?php echo $infoDatiCA[$i]['PCALIQ']; ?>')"
                                                class="btn btn-primary btn-xs btn-space" style="float: left;" aria-label="Left Align">
                                                <span class="glyphicon glyphicon-wrench" style="color:yellow" aria-hidden="true"></span> Modifica
                                    </button>
                                    </td>
                                    <td><div align="right"><font size="2"><?php echo $infoDatiCA[$i]['PCRISU']; ?></font></div></td>
                                    <td><div align="right"><font size="2"><?php echo $infoDatiCA[$i]['PCALIQ']; ?></font></div></td>
                                </tr>
:

Codice:
function changeRecord(pcrisu, pcaliq ){   
    
    var pcrisuN = document.getElementById("PCRISU").value;   
    var pcaliqN = document.getElementById("PCALIQ").value;     
    
    bootbox.dialog({
    message:"Sei sicuro di voler modificare il record dal db "+"?",
    buttons: {
      yes: { 
        label: "Conferma",
        className: "btn-info",
        callback: function(result) { 
              
            onLoadAD();
            $.ajax({
            type: "GET",
            url: "libreria/changeRecord.php",
            data: "pcrisu="+pcrisu+"&pcaliq="+pcaliq="+"&pcrisuN+pcrisuN+"&pcaliqN="+pcaliqN,
            dataType: "html",
            cache: false,
                success: function(msg){   
                waitingDialog.hide(500);
                                
                var risposta = JSON.parse(msg);       
                lineToChangeCA.find('td:eq(1)').text(risposta.risuN).css('text-align','right');
                lineToChangeCA.find('td:eq(2)').text(risposta.aliqN).css('text-align','right');
                
                $('#boxSelectRec').modal('hide');
                $('.modal-backdrop').remove();   
                }
           });
           return;   
        }
      },
      no: {
            label: "Esci",
            className: "btn-info",
            callback: function() {}
          }
    }
});
}

Come posso vedere i due valori aggiornati nella tabella quando ri-premo il bottone di modifica?
Grazie
 
HTML:
data: "pcrisu="+pcrisu+"&pcaliq="+pcaliq="+"&pcrisuN+pcrisuN+"&pcaliqN="+pcaliqN,
in questa riga ci sono errori di sintassi, lo script si blocca senza eseguire lo script php richiamato
se lo script aggiorna il db, ebbene l'aggiornamento non può avvenire

HTML:
onclick="selectRecordCA( '<?php echo $infoDatiCA[$i]['PCRISU']; ?>', '<?php echo $infoDatiCA[$i]['PCALIQ']; ?>')"
questa istruzione è statica, mi sembra di capire che viene generata al caricamento della pagina e mai più modificata
se è l'istruzione che avvia il processo di modifica, proporrà sempre i valori iniziali

non hai pubblicato altri dettagli utili a capire meglio, ti suggerisco di correggere gli errori di sintassi e rivedere la logica delle operazioni
 
Ok forse non é chiaro il codice. Provo a spiegarmi meglio:

le seguenti righe di codice HTML servono a selezionare la riga della tabella con i valori da modificare, la selezione tramite bottone mi va a richiamare il javascript
HTML:
<button type="button" id="btnChange" value="btnChange" data-pcrisu="'<?php echo $infoDatiCA[$i]['PCRISU']; ?>'"
                                                                                           data-pcaliq="'<?php echo $infoDatiCA[$i]['PCALIQ']; ?>'"
                                                                                           onclick="selectRecordCA ('<?php echo $infoDatiCA[$i]['PCRISU']; ?>',
                                                                                                                                            '<?php echo $infoDatiCA[$i]['PCALIQ']; ?>', this)"
                           class="btn btn-primary btn-xs btn-space" style="float: left;" aria-label="Left Align">
                       <span class="glyphicon glyphicon-wrench" style="color:yellow" aria-hidden="true"></span> Modifica
               </button>

la chiamata al javascript (selectRecordCA) mi visualizza la riga della tabella con le due colonne per l'eventuale modifica dei valori. Di seguito il relativo HTML:
HTML:
<button type="button" value="Modifica" onclick="changeRecordCA( 
                                                                                       '<?php echo $pcrisu; ?>',
                                                                                       '<?php echo $pcaliq; ?>',
                                                                                       '<?php echo $infoButton; ?>')"
                            class="btn btn-primary btn-xs btn-space" style="float: right;" aria-label="Left Align">
                <span class="glyphicon glyphicon-pencil" style="color:yellow" aria-hidden="true"></span> Conferma modifica
               </button>

con lo script 'changeRecordCA' faccio l'aggiornamento al db e la return al primo HTML che mi visualizza i valori delle due celle modificati.
Di seguito la porzione di java script:
Codice:
               // Qui aggiorno il db e poi con JSON aggiorno le due celle della tabella
               ........................
               ........................
                // Aggiorno le celle
                var risposta = JSON.parse(msg);       
                lineToChangeCA.find('td:eq(1)').text(risposta.risuN).css('text-align','right');
                lineToChangeCA.find('td:eq(2)').text(risposta.aliqN).css('text-align','right');
                
                // aggiorno valori aliquote
                $(infoButton).data('pcrisu', risposta.risuN);             
                $(infoButton).data('pcaliq', risposta.aliqN);

a questo punto, ripeto, oltre ad aver aggiornato il db, vedo correttamente le due celle della tabella aggiornate, ma se riclicco sul bottone corrispondente alle stesse per una nuova modifica, visualizzo i valori vecchi, nel relativo HTML di modifica di quella porzione di tabella, e cioé quelli prima della modifica.

In breve, l'aggiornamento funziona nel db e nel primo HTML, dove mi viene visualizzata l'intera tabella, ma non funziona bene quando vado a riselezionare subito la stessa porzione di riga tabella.
 
In parte lo risolto.

Con la seguente riga HTML:
HTML:
<button type="button" id="btnChange" value="btnChange" data-pcrisu="'<?php echo $infoDatiCA[$i]['PCRISU']; ?>'"
                                                                                           data-pcaliq="'<?php echo $infoDatiCA[$i]['PCALIQ']; ?>'"
                                                                                           onclick="selectRecordCA( '<?php echo $infoDatiCA[$i]['PCRISU']; ?>',
                                                                                                                                            '<?php echo $infoDatiCA[$i]['PCALIQ']; ?>', this)"
                                                class="btn btn-primary btn-xs btn-space" style="float: left;" aria-label="Left Align">
                                                <span class="glyphicon glyphicon-wrench" style="color:yellow" aria-hidden="true"></span> Modifica
               </button>

nel javascript ho modificato le seguenti righe:

Codice:
// aggiorno valori aliquote
                $(infoButton).data('pcrisu', risposta.risuN);             
                $(infoButton).data('pcaliq', risposta.aliqN);

con le righe:

Codice:
// aggiorno valori aliquote
                $('#btnChange').data('pcrisu', risposta.risuN);             
                $('#btnChange').data('pcaliq', risposta.aliqN);

cosi facendo faccio riferimento a #btnChange del mio primo HTML.

Ma tutto questo funziona per la prima riga della tabella, selezionando le altre righe dovrei far riferimento a quella riga selezionata..... qualcuno sa dirmi come?
 

Discussioni simili