2010-12-30 17 views
8

Sto usando zend framework, vorrei ottenere i dati POST usando Jquery ajax post su a per salvare senza aggiornare la pagina.Zend and Jquery (Ajax Post)

//submit.js 

$(function() { 

    $('#buttonSaveDetails').click(function(){ 
     var details = $('textarea#details').val(); 
     var id = $('#task_id').val(); 
     $.ajax({ 
      type: 'POST', 
      url: 'http://localhost/myproject/public/module/save', 
      async: false, 
      data: 'id=' + id + '&details=' + details, 
      success: function(responseText) { 
       //alert(responseText) 
       console.log(responseText); 
      } 

     }); 
    }); 
}); 

Sul mio controller, non so come recuperare i dati POST da ajax.

public function saveAction() 
{ 

    $data = $this->_request->getPost(); 
    echo $id = $data['id']; 
    echo $details = $data['details']; 
    //this wont work; 
} 

Grazie in anticipo.

risposta

13

Set $.ajax 's dataType opzione 'JSON', e modificare il callback successo a leggere dal JSON ricevuto:

$('#buttonSaveDetails').click(function(){ 
    var details = $('textarea#details').val(); 
    var id = $('#task_id').val(); 
    $.ajax({ 
      type: 'POST', 
      dataType: 'json', 
      url: 'http://localhost/myproject/public/module/save', 
      async: false, 

      // you can use an object here 
      data: { id: id, details: details }, 
      success: function(json) { 
       console.log(json.id + ' ' + json.details); 
      } 
    }); 

    // you might need to do this, to prevent anchors from following 
    // or form controls from submitting 
    return false; 
}); 

E dal controller, inviare i dati in questo modo:

$data = $this->_request->getPost(); 
echo Zend_Json::encode(array('id' => $data['id'], 'details' => $data['details'])); 

Come punto di chiusura, assicurarsi che il rendering automatico della vista sia stato disabilitato, quindi l'unico output che ritorna al client è l'oggetto JSON.

+0

Funziona! grazie karim79! –

+0

@Zend_Newbie_Dev - Qualsiasi momento :) – karim79

+0

Alcune semplificazioni per [karim79] (http://stackoverflow.com/users/70393/karim79) 's [risposta] (http://stackoverflow.com/questions/4559808/zend- e-jquery-ajax-post/4559825 # 4559825): 1. '$ .ajax''s' url' può anche essere relativo (raccomandato all'interno dello stesso dominio), 2. '$ .ajax''s' data' può anche essere generato usando '$ (" # formId "). serialize()' (esegue automaticamente la codifica dell'URL) –

2

più semplice modo per ottenere questo è:

$details=$this->getRequest()->getPost('details'); 

$id= $this->getRequest()->getPost('id'); 

Spero che questo funzionerà per voi.