Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Ajax ed eccezioni php

  1. #1
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313

    Ajax ed eccezioni php

    ciao,
    faccio una chiamata ajax con mootools a uno script php.
    lo script php restituisce del codice html cosi che onSuccess() popolo un div con i contenuti richiesti.
    tutto funziona a dovere....
    il problema é che il metodo php puo fallire e generare un'eccezione. Ora come ora, se ho un'eccezione, la passo al posto dell'atteso HTML... cosi facendo, il testo dell'errore é visualizzato nel div al posto dei contenuti richiesti.

    la domanda é:
    quale é il modo migliore per "dire" ad ajax che in effetti il php ha fatto cilecca?!
    intanto ho anche messo un onFailure() che fa un alert() nel caso che ci sia un 404 o roba simile... ma non ho idea di come entrare nel onFailure() se ho un'eccezione gestita dal mio blocco try/catch in php...

    qui un pezzo di codice ajax (il php é molto semplice e restituisce un

    ):

    codice:
    a.addEvent("click", function (event) {
    
                //the url to the action
                var url_to_action = a.href;
                var parent = a.getParent('div');
    
                var loader = parent.getElements('dd.ajax_loader');
                loader.removeClass('invisible');
    
                //make the ajax call, replace text
                var req = new Request.HTML({
                  method: 'post',
                  url: url_to_action,
                  update: parent,
    
                  onFailure: function(responseText, responseXML){
    
                        alert('errore');
                  },
    
                  onComplete: function(responseText, responseXML) {
    
                      //hide the loader img
                      loader.addClass('invisible')
    
                      //il parent dovrebbe essere popolato con l'html
                      
                  }
                }).send();
    
                //prevent normal link behavior
                event.stop();
    
            });
    thanks
    alcool: la causa e la soluzione di tutti i problemi

  2. #2

    Re: Ajax ed eccezioni php

    Originariamente inviato da Gumble
    ma non ho idea di come entrare nel onFailure() se ho un'eccezione gestita dal mio blocco try/catch in php...
    Non puoi, o almeno, non e' cosi' che funziona onFailure() (non uso mootools ma immagino sia come l'equivalente jQuery).

    Per failure si intende quello della richiesta AJAX non dell'esecuzione dello script PHP. Se la richiesta HTTP viene completata con uno status di 200, allora si ritiene un success.

    Per gestire eccezioni ed errori vari (non fatali alla richiesta) devi restituire alla chiamata AJAX un qualche codice che indichi cosa e' successo. Io in genere restituisco un oggetto codificato in JSON in cui specifico uno "status" (che puo' essere "error" o "ok") ed eventuali altre informazioni (sul tipo di errore, o altre cose a seconda delle necessita'). Questa risposta la ricevi nella onSuccess() (o come si chiama) e la gestisci analizzandone il contenuto.

  3. #3
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    in effetti, dopo un po di ricerche sono giunto alla stessa conclusione.
    ho quindi deciso di restituire un oggetto ajax con il campo 'status' come suggerito da te.
    il problema é che se ho un'eccezione restituisco questo (ovviamente codificato in json):
    codice:
    $ret['status'] = 'ko';
    $ret['exception'] = 'il php non ha funzionato'
    return json_encode($ret);
    ora il problema é l'opposto... se non ho un'eccezione come faccio a restituire dell'html ora che la chiamata ajax si attende del json?
    alcool: la causa e la soluzione di tutti i problemi

  4. #4
    Originariamente inviato da Gumble
    in effetti, dopo un po di ricerche sono giunto alla stessa conclusione.
    ho quindi deciso di restituire un oggetto ajax con il campo 'status' come suggerito da te.
    il problema é che se ho un'eccezione restituisco questo (ovviamente codificato in json):
    codice:
    $ret['status'] = 'ko';
    $ret['exception'] = 'il php non ha funzionato'
    return json_encode($ret);
    ora il problema é l'opposto... se non ho un'eccezione come faccio a restituire dell'html ora che la chiamata ajax si attende del json?
    Codice PHP:
    $ret['status'] = 'ok'
    $ret['html'] = ... // codice HTML possibilmente incluso da una view o sistema simile
    echo json_encode(ret); // echo o return a seconda del tuo setup 
    e lato javascript usi l'HTML contenuto nella proprieta' "html" dell'oggetto JSON restituito.

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.