2012-03-15 25 views
5

मैं वर्तमान में एक सिम्फनी 2 आधारित प्रोजेक्ट पर काम कर रहा हूं जिसमें बहुत सारे AJAX उपयोग हैं।मैं symfony2 में एक JSON कैसे प्राप्त कर सकता हूं

अब मैं $.ajax(); (POST प्रकार) के माध्यम से एक JSON भेजना चाहता हूं और इसे symfony2 नियंत्रक में संभाल सकता हूं। लेकिन मुझे पूरा यकीन नहीं है कि मैं नियंत्रक के अंदर JSON तक कैसे पहुंचता हूं।

अभी मुझे मिल गया है निम्नलिखित:

जे एस:

  $.ajax({ 
       url: url, 
       type:"POST", 
       data:json, 
       success:function (data) { 
        $('div.tooltip p').html(data); 
       } 
      }); 

और पीएचपी:

public function registrationAction(Request $request) { 
     if($request->getMethod() == 'POST') { 
      // How to receive?? 
     } 

     return $this->render('KnowHowERegistrationBackendBundle:Create:registration.html.twig'); 
} 

केवल एक चीज मैं नहीं जानता कि मैं कैसे उपयोग कर सकते हैं है JSON? मुझे यकीन है कि यह बहुत आसान है मैं इसे नहीं देख रहा हूं। आपकी मदद के लिए धन्यवाद!

+1

आप FOSRestBundle पर एक नज़र रखना चाहिए: इस सामग्री को पार्स करने https://github.com/FriendsOfSymfony/FOSRestBundle – igorw

उत्तर

3

अपने कोड मैं पूरा नहीं लगता, अगर आप json प्रारूप मुझे लगता है कि इस तरह सेटअप $ .ajax, बस उदाहरण

$.ajax({ 
       url: url, 
       type:"POST", 
       data:"JSONFile=" + json, 
       success:function (data) { 
        $('div.tooltip p').html(data); 
       } 
      }); 

ऐड पैरामीटर JSONFile या के साथ सर्वर से डेटा भेजने के लिए चाहते हैं तुम क्या चाहते हो जो कुछ भी और आप जेसन डीकोड का उपयोग क्लाइंट से जेसन को पुनः प्राप्त करने के लिए कर सकते हैं।

इस php में कोड है: symfony2 नियंत्रक प्रत्यक्ष acces में

$json = $_POST['JSONFile']; 

var_dump(json_decode($json)); 
var_dump(json_decode($json, true)); //true option if you will convert to array 

$_POST बुरा है तो अपने ajax अनुरोध में अनुरोध $request = $this->getRequest(); $request->request->get('JSONFile'); // get a $_POST parameter

+5

हालांकि यह काम करता है और जटिल है, '$ _POST' तक पहुंच सीधे सिम्फनी 2 के साथ करने का एक अच्छा तरीका नहीं है। जेबीइन्फो का उत्तर बहुत बेहतर है। – chiborg

+0

yup मेरा कोड केवल php में उदाहरण है, Sysmfony 2 में शायद पैरामीटर प्राप्त करने के लिए और हाइट सुरक्षा पसंद करते हैं जो अलग-अलग मामले होंगे। पैरामीटर प्राप्त करने के लिए आप '$ request-> request-> प्राप्त करें ('JSONFile') का उपयोग कर सकते हैं; // $ _POST पैरामीटर ' – viyancs

+1

प्राप्त करें मैं अपना उत्तर अपडेट कर रहा हूं। – viyancs

13

का उपयोग यू आवेदन करने के लिए सामग्री प्रकार सेट करना होगा/json :

$.ajax({ 
     url: url, 
     type:"POST", 
     contentType: 'application/json', 
     data:json, 
     success:function (data) { 
      $('div.tooltip p').html(data); 
     } 
}); 

और आपके नियंत्रक उपयोग में Silex http://silex.sensiolabs.org/doc/cookbook/json_request_body.html के इस रसोई की किताब पर

if($request->getMethod() == 'POST') { 
    if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) { 
     $data = json_decode($request->getContent(), true); 
     $request->replace(is_array($data) ? $data : array()); 
    } 
} 

अधिक जानकारी देखने के लिए

+0

यह '$ अनुरोध-> अनुरोध-> प्रतिस्थापित है (is_array ($ डेटा)? $ डेटा: सरणी());' एपीआई [यहां] देखें (http://api.symfony.com/3.1/Symfony/Component /HttpFoundation/Request.html) $ अनुरोध ऑब्जेक्ट पर प्रयुक्त विधियों के लिए। – cpxPratik

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