Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344

    jQuery.ajax: gestire i dati restituiti

    Ho questa chiamata con ajax:

    Codice PHP:
        $(document).ready(function(){
          
            $(
    "#btn_salva").click(function(){
                var 
    id_famiglia = $("#id_famiglia").val();
                var 
    famiglia = $("#famiglia").val();
                $.
    ajax({
                    
    type"POST",
                    
    url"famiglie_controllo.php",
                    
    data"id_famiglia=" id_famiglia "&famiglia=" famiglia,
                    
    dataType"html",
                    
    success: function(msg){
                      $(
    "#nota").replaceWith(msg);
                    },
                    
    error: function(){
                        
    alert("Chiamata fallita, si prega di riprovare...");
                    }
                });
            });
        
        }); 
    La pagina famiglie_controllo.php mi restituisce un testo dove specifico il successo dell'operazione lato server (salvataggio su db) o meno.

    Vorrei però gestire il valore restituito in quanto se il salvataggio è andato a buon fine vorrei pulire i campi del form, altrimenti li vorrei lasciare.

    La domanda è: come faccio a passare dei parametri in risposta dalla pagina famiglie_controllo.php ? Posso passare esclusivamento una stringa di visualizzazione ?
    Certo potrei fare un controllo su msg ma mi chiedo se sia possibile aggiungere dei parametri in risposta.

    Inoltre come viene gestito l'error della chiamata? E' true solo quando non riesce a comunicare con la pagina? E' possibile restituire dalla pagina di controllo qualcosa in modo che risulti error?

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Puoi passare esclusivamente una stringa o un documento xml completo, il contenuto della stringa lo puoi esaminare ed agire in conseguenza, del documento xml puoi scorrerlo/interrogarlo per esaminare il contenuto farne cio' che ti pare alla stessa maniera di prima
    La gestione dell'error, come lo chiami tu, e' solo in rapporto alla comunicazione col server, non la puoi usare per comunicare esiti di altra natura.


    Quello che potersti evitare e' di aprire millemila discussioni nelle quali sviluppi la problematica che scaturisce dalla precedenti... un minimo di analisi globale preventiva del problema da parte tua sarebbe gradita
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    fatti tornare da php un json con tutti i dati che ti interessano...

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ok per la gestione della stringa o l'utilizzo di json.

    Il fatto che apra una nuova discussione è perchè mi sembra più logico e semplice, anche per coloro che si sono ritrovati in problematiche simili, trovare avere una discussione con titolo inerente al problema specifico e non sviluppare una discussione con un titolo che tratta poi diversi argomenti.

    Sul fatto che poi mentre scopri una tecnica che non hai mai utilizzato nascano nuove problematiche che prima non avevi affrontato credo che sia normale per chiunque.

    Non voglio fare polemica però trovo anche offensivo che tu dica 'evitare di aprire millemila discussioni' quando ho aperto 3 discussioni che comunque trattano di problematiche assolutamente diverse.

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Ok, ti chiedo scusa, ho esagerato.

    Consideralo solo un invito.
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Figurati nessun problema. Lo considererò tale.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ho letto un po' le specifiche su json che, nel caso di form più complesso, mi risulta fondamentale per poter poi fare i controlli.

    Quello che mi sfugge è come rispondere dalla pagina php chiamata e recuperare i dati.

    Con post la chiamata è così:

    Codice PHP:
                    $.ajax({
                        
    type"POST",
                        
    url"famiglie_update.php",
                        
    data"action=" action "&id_famiglia=" id_famiglia "&famiglia=" famiglia,
                        
    dataType"html",
                        
    success: function(msg){
                            $(
    "#nota").replaceWith(msg);
                            if(
    action == 'insert') {$("#famiglia").val("");};
                            $(
    "#famiglia").focus();
                        },
                        
    error: function(){
                            
    alert("Chiamata fallita, si prega di riprovare...");
                        }
                    }); 
    e dalla pagina famiglie_update.php recupero il dato con $_POST.

    Se invece voglio passare dati in json:
    Codice PHP:
    $.ajax({
      
    urlurl,
      
    dataType'json',
      
    datadata,
      
    successcallback
    }); 
    Dove in data passo gli stessi parametri che passavo in POST. Quello che non capisco è come dalla pagina famiglie_update.php recuperare ed utilizzare i dati json e, una volta conclusa l'operazione lato server, restituire la stringa json con i dati e recuperarli nella pagina di chiamata.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    riprendo questa discussione perchè sono andato avanti con gli studi ed ora mi manca un ultimo passo:

    ho il form che tramite la chiamata ajax passa i dati in post e si aspetta in risposta dati in JSON:

    Codice PHP:
    <script type="text/javascript">
        $(
    '#frm').submit(function() {
            
            var 
    campi = $("#frm").serialize();
            $.
    ajax({
                
    type"POST",
                
    url"form_control.php",
                
    datacampi,
                
    dataType"json",
                
    success: function(msg){
                    var 
    obj = $.parseJSON(msg);
                    
    alert(obj);
                    
    alert(msg);
                },
                
    error: function(){
                    
    alert("Chiamata fallita, si prega di riprovare...");
                }
            });
        });
    </script> 
    Con serialize() preparo la stringa da inviare in POST. In 'form_control.php' effettuo delle verifiche e reinvio dei dati in formato JSON:

    Codice PHP:
    $arr = array('nome' => $_POST['nome'], 'cognome' => $_POST['cognome']);
    echo 
    json_encode($arr); 
    Il problema che mi rimane è quello di decodificare i dati di ritorno. Pensavo infatti che utilizzando parseJSON avrei potuto manipolare i dati di ritorno. Invece in risposta mi ritrovo:

    obj è null
    msg è un Object

    non ci sono errori nella console javascript quindi di ritorno ho i dati in JSON correttamente.

    se passo però di ritorno

    Codice PHP:
    $arr = array($_POST['nome'], $_POST['cognome']);
    echo 
    json_encode($arr); 
    ottengo:

    obj: null
    msg = nome,cognome (correttamente quello che ho inserito nel form)

    In definitiva come faccio a fare il parsing della stringa di ritorno in JSON?

    Io vorrei restituire delle coppie ad esempio: salvato = si, errore = no, ecc.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    ho capito il problema: non serve fare il parsing ma solamente scorrere l'array restituito da JSON:

    Codice PHP:
    $.each(msg, function(indexvalue) {
       
    alert(index+': '+value);
    }); 
    ottenendo così le coppie indice, valore.

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.