Valori di ritorno json via ajax non visti.

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Questa applicazione non sa da fare :(
Va bene, dunque, devo rendere editabile il registro appuntamenti, niente di più semplice, un programma in PHP cicla i record estraendo quelli futuri, crea anche un elenco colorato in base alla vicinanza della scadenza, e tutto funziona fino a qui.
Sotto ogni "appuntamento" oltre ai dati essenziali, ci sono tre pulsanti: uno per vedere l'elenco completo delle informazioni ( allargando la vista ) uno per editare, ed uno per cancellare l'appuntamento.
Ora se clicco sul tasto per editare, mi si aprre una finestra modale con i campi in modalità edit, ogni campo è riempito con i dati prsenti nel database, uno li edita e poi preme il tasto salva. Facile no?
E no!
Perché sto avendo problemi a riempire i campi prima che la finestra venga mostrata.
In pratica, prendo via ajax il dato dal database e poi riempio i campi così come deve avvenire. ma non avviene.
Un poco di codice:
I dati in arrivo dal database e in formato JSON per l'esempio
{
"id_app":2,
"id_richiedente":8,
"id_num":0,
"giorno_app":"2020-07-26",
"ora_app":"10:40:00",
"nome":"Ciccio Formaggio",
"email":"",
"email_ufficio":"",
"pec":"",
"pec_ufficio":"",
"telefono":null,
"telefono_ufficio":null,
"cellulare":"",
"cellulare_ufficio":"",
"fax":"",
"azienda":"",
"motivo":"Ciao",
"durata_giorni":4,
"risposta":true
}
Il pezzo di codice HTML della pulsantiera:
HTML:
            <div class="btn-group" role="group" aria-label="Bottoniera per l'appuntamento">
                <button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Vede più dati" id="view-2">
                    <span class="fa fa-eye" aria-hidden="true"></span>
                </button>
                <button type="button" class="btn btn-primary" data-toggle="tooltip" data-placement="bottom" title="Modifica i dati" id="edit-2">
                    <span class="fa fa-edit" aria-hidden="true"></span>
                </button>
                <button type="button" class="btn btn-danger" data-toggle="tooltip" data-placement="bottom" title="Cancella l'appuntamento" id="delete-2">
                    <span class="fa fa-trash-o" aria-hidden="true"></span>
                </button>
            </div>
Il tasto chiamato edit- è il tasto per richiamare l'edit, il numero dopo il trattino è l'ID del record nel database.
E infine ecco il javascript che riempie ( dovrebbe riempire ) i campi della finestra prendendoli via ajax, di cui la porzione sopra viene dal programma remoto ( che quindi funziona ).
JavaScript:
                $( 'button[id^="edit-"]' ).click( function()
                {
                    var id = $( this ).prop( 'id' ).split( '-' );
                    $.ajax(
                    {
                        url: "getAppuntamento.php",
                        data: {identity: id[1]},
                        method: 'post',
                        dataType: 'text',
                        success: function( data, status, xhr )
                        {
                            if ( status == 'success' && data.risposta == false )
                            {
                                alert( "Si è verificato un errore tentando di registrare i dati.\nProva di nuovo e se si verifica ancora l'errore,\navvisa l'amministratore del sito.");
                            }
                            else if ( status == 'success' && data.risposta == true )
                            {
                                $( '#appuntamento-num').val( id[1] );
                                $( '#appuntamento-ute').val( <?php echo $datiSessione['id_ute']; ?> );
                                $( '#appuntamento-calendario' ).val( data.giorno_app );
                                $( '#appuntamento-orario' ).val( data.ora_app );
                                $( '#appuntamento-user' ).val( data.nome );
                                //   Seguono altri campi....

                                $( '#appuntamenti' ).show( 300 );
                            }
                            else
                            {
                                alert( "Errore grave tentando di leggere nel database!\nAvvisare l'amministratore di sistema." );
                            }
                        }
                    });
                });
quando si preme il tato edit, viene richiamato questo pezzo di codice, per prima cosa viene preso l'ID, effettuato lo split del nome in modo da ricavare il numero dell'ID del database, che poi viene passato al file remoto.
Il file remoto risponde in diversi modi:
  1. data.risposta = false ( non esiste nel database tale record );
  2. data.risposta = true ( record trovato ) e poi va avanti a riempire i campi prima di visializzare la finestra modale;
  3. errore generico.
Il problema è in data, in pratica l'analizzatore mi riporta i dati, il pezzo di codice in cima è preso da lì, quindi sono dati autentici ritornati dal record; nella sezione di codice success: function( data... data è riempito con il record [vedi 1:] ma poi non legge nulla e mi va sempre nell'ultimo pezzo del controllo facendo partire l'alert di errore grave.

[1] immagine dei dati presenti
Clipboard01.jpg

[2] L'immagine con i dati di ritorno
Clipboard01.jpg
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Sta iniziando a funzionare, in pratica all'inizio mi ero reso conto che stavo aspetando una risposta json, ma l'ajax era settato per aspettarsi un html.
Corretto, avevo lo stesso problema, ho scoperto che la stringa da remoto veniva interpretata sempre come una stringa di caratteri e non come un oggetto JSON.
Non ho capito il perché, ma mi sono adeguato, ho utilizzato un altro tipo di approccio, usando la getJSON() ed ha funzionato!
JavaScript:
                 $.getJSON(
                        "getAppuntamento.php",
                        {identity: id[1]},
                        function( data, status, xhr )
                        {
                            if ( status == 'success' && data.risposta == false )
                            {
                                alert( "Si è verificato un errore tentando di registrare i dati.\nProva di nuovo e se si verifica ancora l'errore,\navvisa l'amministratore del sito.");
                            }
                            else if ( status == 'success' && data.risposta == true )
                            {
                                $( '#appuntamento-num').val( id[1] );
                                $( '#appuntamento-ute').val( <?php echo $datiSessione['id_ute']; ?> );
                                $( '#appuntamento-calendario' ).val( data.giorno_app );
                                $( '#appuntamento-orario' ).val( data.ora_app );
                                $( '#appuntamento-user' ).val( data.nome );
                                $( '#appuntamenti' ).show( 300 );
                            }
                            else
                            {
                                alert( "Errore grave tentando di leggere nel database!\nAvvisare l'amministratore di sistema." );
                            }
                        }
                    );
 
Discussioni simili
Autore Titolo Forum Risposte Data
GoshMaledetto problema ritorno valori php da chiamata ajax Ajax 9
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
G Invio di più valori con la stessa checkbox PHP 4
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
C prendere dei valori da Plugin e inserirli nel database joomla Joomla 0
F Stampare valori di un database PHP 14
T Recupero valori tramite $_GET PHP 4
otto9due Inserire o aggiornare tabella my sql controllando una coppia di valori PHP 7
M Problemi con la stampa dei valori in php PHP 1
M Passaggio Valori checbox in textarea Javascript 1
D passare valori da database sql a php PHP 1
O Recupero valori da listato Javascript 0
R Raggruppare valori array PHP 5
R Estrarre valori duplicati più volte PHP 0
T recupero valori select multipla da android Javascript 3
L estrarre valori max tra più tabelle MySQL 2
N VENDITA CORSO DROPSHIPPING LUCA VALORI Altri Annunci 0
A Ottenimento valori presenze istantanee MySQL 8
S Come filtrare valori di un array PHP 4
L Estrazione valori max su più campi MySQL 4
G Controllare valori in 2 tabelle PHP 5
X [Select] Valori chiave non presenti in un'altra tabella MySQL 2
G MariaDB non restituisce dei valori PHP 7
M Estrarre valori MAX da un db con una left join MySQL 8
S Istruzione sql valori "simili" PHP 7
C [PHP] Estrarre da una classe i valori che mi interessano PHP 5
S [PHP] Confrontare due array con valori quasi uguali PHP 2
D [PHP] Tabella: modificare direttamente i valori PHP 6
MarcoGrazia [PHP] Unioni di due array con somma di valori PHP 6
B inserire valori da una tabella a un altra mysql PHP 34
M [PHP] Recuperare coppia con valori i valori MAX e coppia con valori MIN PHP 26
Tommy03 [PHP] Media valori presi da una query PHP 3
M Filtrare risultati con valori checkbox passati con jquery jQuery 2
psicomia Gestione funzione in javascript in tabella richiamare"textarea" valori preimpostati in "select" Javascript 2
G [ASP] Ciclare i valori di 2 array Classic ASP 2
elpirata [RISOLTO][Mysql] Problema insert valori apostrofati MySQL 1
R php Somma valori in file csv PHP 2
A sommare valori a video per lo stesso giorno jQuery 1
E [PHP] Istruzione condizionale con valori booleani PHP 16
S [Javascript] come estrarre valori array e inserirli in diverse variabili Javascript 1
C [PHP] Creare un Pulsante che ricopia valori di un campo in altro record PHP 4
elpirata [MySQL] Sostituire valori campi con dati casuali MySQL 4
K [PHP] Controllare dati database tra due valori PHP 18
alankanz [VBA] Valori Array in una cella Visual Basic 1
F INSERIRE IN UN'UNICA CASELLA DI TESTO REPORT ACCESS I VALORI DELLA TABELLA DI UN'INTERA COLONNA MS Access 2
A [PHP] Ciclare array multidimensionale e inserire valori in DB PHP 2
M Creare tabella da pagina php popolata con valori passati con POST PHP 5
T [PHP] Checkbox E Valori Multipli In Una Colonna PHP 1
G [PHP] FORM INVIO VALORI A QUERY CON TRE CONDIZIONI PHP 2
M Ottenere i valori di una proprietà su un array di oggetti (es. DIV) in JavaScript Javascript 7

Discussioni simili