2010-12-30 21 views
8

मैं ज़ेंड फ्रेमवर्क का उपयोग कर रहा हूं, मैं पृष्ठ को रीफ्रेश किए बिना सहेजने के लिए 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); 
      } 

     }); 
    }); 
}); 

मेरे नियंत्रक पर, मुझे नहीं पता कि AJAX से POST डेटा कैसे पुनर्प्राप्त करें।

public function saveAction() 
{ 

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

अग्रिम धन्यवाद।

उत्तर

13

सेट $.ajax के 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

यह काम करता है! धन्यवाद करीम 7 9! –

+0

@Zend_Newbie_Dev - किसी भी समय :) – karim79

+0

कुछ सरलीकरण [karim79] (http://stackoverflow.com/users/70393/karim79) के [उत्तर] (http://stackoverflow.com/questions/4559808/zend- और-jquery-ajax-post/4559825 # 4559825): 1. '$ .ajax' का 'url' भी रिश्तेदार (उसी डोमेन के भीतर अनुशंसित) हो सकता है, 2.' $ .ajax' का 'data' कर सकता है '$ (" # formId ") का उपयोग करके भी उत्पन्न किया जाएगा। serialize()' (स्वचालित रूप से यूआरएल एन्कोडिंग करता है) –

2

सबसे आसान तरीका है:

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

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

आशा यह आपके लिए काम करेंगे।

संबंधित मुद्दे