2010-12-30 23 views
8

Zend çerçevesini kullanıyorum, sayfayı yenilemeden kaydetmek için Jquery ajax yazısını kullanarak POST verilerini almak istiyorum.Zend ve Jquery (Ajax Mesaj)

//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); 
      } 

     }); 
    }); 
}); 

Denetleyicimde, POST verilerini ajax'den nasıl alacağımı bilmiyorum.

public function saveAction() 
{ 

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

Şimdiden teşekkürler.

cevap

13

Seti $.ajax 'ın dataType seçeneği 'json', ve alınan JSON'dan okumak için başarı geri arama değiştirin:

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

Ve denetleyicisinden

böyle veri göndermek:

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

Bir kapanma noktası olarak, otomatik görünüm oluşturma işleminin devre dışı bırakıldığından emin olun, böylece istemciye giden tek çıkış JSON nesnesidir. Bu almak için

+0

Çalışıyor! teşekkürler karim79! –

+0

@Zend_Newbie_Dev - Herhangi bir zaman :) – karim79

+0

[karim79] 'a bazı basitleştirmeler (http://stackoverflow.com/users/70393/karim79)' un [cevap] (http://stackoverflow.com/questions/4559808/zend- ve-jquery-ajax-post/4559825 # 4559825): 1. '$ .ajax'' url' da göreli olabilir (aynı alanda tavsiye edilir), 2. '$ .ajax'''''' "$ (" # formId ") kullanılarak da üretilebilir. serialize()' (otomatik olarak kodlayan URL yapar) –

2

En basit yoludur: Bu sizin için çalışacaktır

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

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

Umut.