2012-03-24 12 views
5

मैं नया केकेपीएचपी 2.1 का उपयोग कर रहा हूं और क्लाइंट साइड पर jQuery द्वारा बनाए गए AJAX अनुरोध को मेरे नियंत्रक को प्रतिक्रिया देने के लिए जेसन व्यू का उपयोग करना चाहता हूं।केकेपीएचपी 2.1 जेसन व्यू

हालांकि, यह दस्तावेज़ीकरण के अनुसार जेसन व्यू के साथ स्वचालित रूप से किया जाना चाहिए।

http://book.cakephp.org/2.0/en/views/json-and-xml-views.html

मैं अपने routes.php फ़ाइल

Router::parseExtensions('json'); 

में इस लाइन जोड़ा और मेरे नियंत्रक में मैं

$this->RequestHandler->setContent('json', 'application/json'); 
$bookings = $this->Bookings->find('all'); 

$this->set('bookings', $bookings); 
$this->set('_serialize', 'bookings'); 

है तब दृश्य अप्रचलित होना चाहिए, लेकिन जब मैं फोन यह, यह अभी भी एक पृष्ठ परोसता है जो एक लापता दृश्य को इंगित कर रहा है।

+0

कृपया ध्यान दें कि आप 'आवेदन निर्धारित करने की आवश्यकता नहीं है/json' स्पष्ट:

मैं अपने एपीआई समारोह में निम्नलिखित किया था। –

उत्तर

5

क्या यूआरएल आप कॉल कर रहे हैं '.json' पर समाप्त होता है?

+1

इससे वास्तव में अंतर आता है! धन्यवाद। थोड़ा अजीब है कि इसके लिए .json की आवश्यकता है जो एक ढांचे में है जो एसईओ के लिए यूआरएल पुनर्लेखन का समर्थन करता है ... –

+2

कोई समस्या नहीं है। लेकिन यह निश्चित रूप से एक अच्छी बात है। तो आप पूरी तरह से जानते हैं कि आपके पृष्ठ पर कौन सी कॉल अजाक्स कॉल थी और जो नहीं (उदा। अजीब या समान में)। भविष्य में ऐसी समस्याओं पर न पड़ने के लिए केक के मूल कोड में एक नज़र डालने का प्रयास करें। वर्क्स डंपिंग या प्रतिबिंबित कक्षाओं द्वारा नियंत्रक में कार्रवाई करने तक ढांचे में शामिल होने के अनुरोध के बाद आपको ढांचे के बारे में बहुत कुछ पता चलता है। ;) लेकिन आप फिर से पूछ सकते हैं, पी; – func0der

0

क्या आपने अपने नियंत्रक की घटकों की सूची में "RequestHandlerComponent" जोड़ा है?

मैं दूसरे मार्ग चला गया और एक JSON दृश्य निर्मित: /app/View/Model/json/view.ctp

<?php 
echo json_encode(array(
'success' => TRUE 
)); 

और मेरे नियंत्रक में मैं प्रयोग किया है:

$this->viewClass = 'Json'; 

सादर , जेम्स

+0

काम कर सकता है, लेकिन मैं जेसनव्यू के साथ "आसान" समाधान की खोज कर रहा था, नीचे दिया गया जवाब अप्रचलित दृश्य बनाता है ... –

2

मुझे केक के साथ कुछ समस्याएं थीं जो मुझे जेसन दृश्य को स्पष्ट रूप से सेट करने के लिए चाहते थे। XML दृश्य डिफ़ॉल्ट रूप से ठीक से लोड नहीं किया गया है बस जेसन।

if($this->RequestHandler->ext == 'json') { 
     $this->autoRender = false; 
     echo json_encode($results); 
    } else if($this->RequestHandler->ext == 'xml') { 
     $this->set(array(
      'results' => $results, 
      '_serialize' => array('results') 
     )); 
    }