2010-12-30 4 views
8

Я использую рамку zend, я хотел бы получить данные POST, используя JQuery ajax post для сохранения без обновления страницы.Zend и 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); 
      } 

     }); 
    }); 
}); 

На моем контроллере я просто не знаю, как получить данные POST из ajax.

public function saveAction() 
{ 

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

Заранее спасибо.

ответ

13

Set $.ajax «s dataType вариант 'JSON', и изменить обратный вызов для чтения из полученного JSON:

$('#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; 
}); 

И от контроллера, передавать данные, как это:

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

В качестве точки закрытия убедитесь, что автоматический рендеринг просмотра отключен, поэтому единственным выходом, возвращаемым клиенту, является объект JSON.

+0

Это работает! спасибо karim79! –

+0

@Zend_Newbie_Dev - В любое время :) – karim79

+0

Некоторые упрощения [karim79] (http://stackoverflow.com/users/70393/karim79) [ответ] (http://stackoverflow.com/questions/4559808/zend- and-jquery-ajax-post/4559825 # 4559825): 1. '' url' '. $ .ajax' также может быть относительным (рекомендуется в том же домене), 2.' 'данные' .ajax'' могут также генерируется с помощью '$ (" # formId "). serialize()' (автоматически кодирует URL) –

2

Простейший способ для получения этого:

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

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

Надеется, что это будет работать для вас.