2010-09-03 13 views
14

आउटपुट करने वाला एक पृष्ठ बनाता है, मैं पूछना चाहता हूं कि कोई एक पृष्ठ बना सकता है जो जेएसओएन डेटा को जेक्री अजाक्स अनुरोध के जवाब के रूप में आउटपुट करता है?ड्रूपल जेएसओएन

एक गैर-ड्रूपल तरीके से, मैं सिर्फ एक php फ़ाइल बनाउंगा, उदाहरण के लिए mypage.php और फिर मैं अपने AJAX अनुरोध के लिए URL के रूप में http://example.com/mypage.php?foo=bar का उपयोग करूंगा। यह पृष्ठ json_encode() का उपयोग कर JSON डेटा आउटपुट करेगा।

मैं इसे ड्रूपल तरीके से कैसे कर सकता हूं?

उत्तर

20

JSON server module आपको नोड्स का JSON आउटपुट देता है।

आप और अधिक कस्टम JSON चाहते हैं, आप hook_menu() का उपयोग एक नया मेनू कॉलबैक बनाने के लिए कर सकते हैं (मूल रूप से एक ऐसे URL पथ एक समारोह की ओर इशारा किया है) और फिर उपयोग करें:

उस कॉलबैक के भीतर डिफ़ॉल्ट HTML की बजाय JSON के रूप में आउटपुट भेजने के लिए।

35

स्कॉट reynen के संकेत भाषा का काम उदाहरण: एक मॉड्यूल कहा जाता mymodule में Drupal 7, में,

function mymodule_menu() { 
    $items['fancystuff/json'] = array(
     'access callback' => true, // available to all 
     'page callback'  => 'mymodule_fancystuff_object', // defined below 
     'delivery callback' => 'drupal_json_output' 
    ); 
    return $items; 
} 



function mymodule_fancystuff_object() { 
    return array('test'=>true,'dummy'=>array(0,1)); 
} 

स्पष्ट अपने कैश, गोटो http://example.com/fancystuff/json लिखने और निहारना

+0

तुम भी 'views_get_view_result लौट सकते हैं (' fancystuff ') '.. वापस जेसन के लिए .. वाह – commonpike

+0

' डिलीवरी कॉलबैक' मेनू तर्क को इंगित करने के लिए धन्यवाद ... मैंने इसे 'drupal_json_output' के उदाहरण का पालन करके सही सामग्री शीर्षलेख के साथ एक बाइनरी फ़ाइल वितरित करने के लिए सेट अप किया है। काम करें और अपना खुद का कॉलबैक बनाएं। सुंदर निफ्टी ... – thirdender

+1

वितरण विधि के रूप में drupal_json_output का उपयोग करने के लिए नकारात्मक है। यदि यह सामग्री वितरित नहीं कर सकता है, उदाहरण के लिए क्योंकि आपके पास उन्हें देखने का कोई अधिकार नहीं है, तो यह "3" जैसी समस्या का वर्णन करने वाले कुछ ड्रोपल निरंतरता के लिए एक सादा पूर्णांक प्रतिबिंबित करेगा। HTTP शीर्षलेख 200 ठीक कहेंगे। – commonpike