Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Zend framework e Ajax

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    103

    Zend framework e Ajax

    Salve a tutti, mi sono avvicinato da poco allo Zend Framework e al MVC. Sto sviluppando la mia prima applicazione basandomi su di essi e mi sono imbattuto nel mio primo problema che non riesco a risolvere.

    Ho la necessità di usare una request Ajax. Mi baso su Prototype come framework js. In una normale applicazione php userei il seguente codice:

    Codice PHP:
        function fun(user) {
            var 
    options 'var=1';     
            new 
    Ajax.Request("pagina.php",                 
                {
                     
    method:'post',
                     
    parametersoptions,                     
                     
    onSuccess:function(data,objson){                     
                     
    alert(data.responseText);                                 
                     }
                 }) 
        } 
    Però giustamente questo codice con lo zend framework non funziona.

    Soluzioni?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Si, prova a creare un controller con questi metodi:

    public function preDispatch(){
    $this->_helper->layout()->disableLayout();
    $this->_helper->viewRenderer->setNoRender(true);
    }

    public function init(){}


    Al posto del tuo "pagina.php" chiama tuosito/controller/action ( sostituisci controller e action con i reali nomi dei tuoi controller e action ).

    Potresti anche creare un controller di base, ovvero estendere Zend_Controller_Action ( es. My_Controller_Action extends Zend_Controller_Action ) e creare i tuoi controller estendendo questa classe ( es. AuthController extends My_Controller_Action ), ed inserire i metodi sopracitati al suo interno che si attivino solo ad una certa richiesta ( per esempio se nella richiesta c'è una certa variabile con un certo valore )

    Così ad esempio
    Codice PHP:
        public function preDispatch(){
          
    $this->_cRequest $this->getRequest();
          
    $this->_cParams $this->_cRequest->getParams();
          
    $this->_cAsync = isset($this->_cParams['async']) && $this->_cParams['async'] == 'true' true false;
          if(
    $this->_cAsync){
            
    $this->_helper->layout()->disableLayout();
            
    $this->_helper->viewRenderer->setNoRender(true);
          }
        }
        
        public function 
    init(){
          
    $this->_cRequest $this->getRequest();
          
    $this->_cParams $this->_cRequest->getParams();
          
    $this->_cAsync = isset($this->_cParams['async']) && $this->_cParams['async'] == 'true' true false;
          
    // Se la richiesta è asincrona usciamo da init, tutto quello che c'è dopo sarebbe nocivo alla risposta
          
    if(true === $this->_cAsync){
            return 
    true;
          }

       
    // qui altro codice che serve nell'init per le richieste non asincrone

    Prova e fammi sapere.
    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    103
    Ciao allora ieri sera dopo aver postato ho trovato (credo) un tuo articolo il seguente: link

    Ho seguito tutto il tutorial. Quando però inserisco il nome utente la console javascript mi restitusce il segente errore:
    Codice PHP:
    Erroreuncaught exception: [Exception... "Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIXPCComponents_Utils.import]"  nsresult"0x80520012 (NS_ERROR_FILE_NOT_FOUND)"  location"JS frame :: file:///Users/Ghost87/Library/Application%20Support/Firefox/Profiles/zjexar82.default/extensions/%7Be0204bd5-9d31-402b-a99d-a6aa8ffebdca%7D/components/nsSessionStore3.js :: <TOP_LEVEL> :: line 111"  datano
    Cosa sbaglio?

    Questi sono i miei file:

    AsyncRequestController.php
    Codice PHP:
    <?php   class AsyncRequestController extends Zend_Controller_Action {      public function usernameAction(){        $utenti = array('zend''jquery''javascript');       $username $this->_request->getParam('nome');       if ($username == ''){         $return '';       }elseif (strlen($username) < 4){         $return ' <p class="error">Nome Utente troppo corto!';       }elseif (in_array($username$utenti)){         $return ' </p><p class="error">Utente già esistente  ';       }else{         $return ' </p><p class="ok">Nome Utente Valido  ';       }       $this->_response->appendBody($return);       $this->_helper->layout->disableLayout();     }    }   ?>

    Ajax.js
    Codice PHP:
     $(document).ready(function(){
        $(
    "#name").bind('keyup',function(){
          var 
    baseUrl "http://localhost";
          var 
    nome = $(this).val();
          var 
    destUrl baseUrl "/asyncrequest/username/nome/" nome;
          $.
    ajax({
            
    urldestUrl,
            
    type'GET',
            
    success:  function(responseText){
              $(
    "#message").html(responseText);
            }
          });
        });
      }); 

    username.phtml
    Codice PHP:
       <?php echo $this->result?>
    Se servono altre info le posto.

    Grazie ancora

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    103
    Adesso non so perchè ma non mi da più quell'errore, però resta il fatto che non funziona.
    Esegue la chiamata ajax ma è come se non eseguisse il controller asyncrequest.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    103
    Ho risolto in qualche modo, forse sbagliavo qualcosa (sicuramente) ma non so cosa.

  6. #6
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    si, l'articolo l'ho scritto io, contento di esserti stato utile

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    37

    info ajax + zend

    Ciao,
    io ho un problema.

    ho un form con una serie di campi.
    Un campo è un menu a tendina con una serie di nomi, quando l'utnete sceglie un nome automaticamente dovrebbe essere ricaricato il form con i dati appropriati.

    Pensavo di usare ajax, ma con zend non so come farlo interagire.

    Avete consigli?


    grazie


    PS: io per creare i form con zend uso la classe Zend_Form)
    ..:: SMZ-studio ::..
    By SaveZ

  8. #8
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    a differenza di quanto scrissi in passato, oggi la soluzione per realizzare dei web services che restituiscano dei dati in vari formati con Zend Framework si chiama contextSwitch .

    Cliccando il link aprirai un articolo che scrissi qualche mese fa a proposito.

    Sviluppato il web service non dovrai far altro che richiamarlo con Ajax ed utilizzare i dati restituiti per fare quello che vuoi.

    Sul mio portale di annunci che ho in firma, alla pagina di inserimento c'è un esempio funzionante, se ti va puoi prendere spunto.


    Ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    37
    non mi è chiaro per che parli di WS.

    io ho bisogno di questo, mi spiego con un esempio.

    ho un campo del form provincia.

    Seleziono la provincia

    il campo successivo è comuni.

    Questo campo deve caricare dinamicamente solo i comuni di quella provincia.


    un saluto
    ..:: SMZ-studio ::..
    By SaveZ

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 © 2024 vBulletin Solutions, Inc. All rights reserved.