बाहर निकलने के साथ जाना है या मर, जूमला नहीं है: यह मेरा ajax कॉल है! क्या इस सामान से निपटने का यह अच्छा तरीका है।
नीचे दिए गए उत्तरों जूमला में परीक्षण किए जाते हैं! 2.5 & 3 (1.5 के लिए भी काम कर सकते हैं)।
जनरल
कार्य के लिए आपका यूआरएल इस तरह देखने के लिए की जरूरत है:
index.php?option=com_similar&task=abc&format=raw
आप से नियंत्रक जो दृश्य का उपयोग करेगा बनाने के लिए, के एबीसी मान लीजिए , जिसमें फ़ाइल view.raw.html होगा (सामान्य दृश्य फ़ाइल के समान)।
नीचे आप एक कच्चे एचटीएमएल प्रतिक्रिया उत्पन्न करने के लिए कोड है:
/controller.php
public function abc()
{
// Set view
JRequest::setVar('view', 'Abc');
parent::display();
}
/views/abc/view.raw.php
<?php
defined('_JEXEC') or die;
jimport('joomla.application.component.view');
class SimilarViewAbc extends JView
{
function display($tpl = null)
{
parent::display($tpl);
}
}
/views/abc/tmpl/default.php
<?php
echo "Hello World from /views/abc/tmpl/default.php";
नोट: यह समाधान करता है, तो मैं HTML वापस जाने के लिए (यह क्लीनर है और जूमला तर्क इस प्रकार) था मैं का उपयोग होता है। सरल JSON डेटा लौटने के लिए, नीचे देखें कि नियंत्रक में सबकुछ कैसे रखा जाए।
यदि आप एक subcontroller करने के लिए अपने अजाक्स अनुरोध करते हैं, जैसे:
index.php?option=com_similar&controller=abc&format=raw
अपने subcontroller नाम से
(कच्चे दृश्य के लिए) abc.raw.php
की जरूरत है।
इसका मतलब यह भी है कि आप एबीसी नामक 2 उप-नियंत्रक होंगे।
यदि आप जेएसओएन वापस करते हैं, तो format=json
और abc.json.php
का उपयोग करना समझ में आता है। जूमला 2.5 में। मुझे इस विकल्प को काम करने के लिए कुछ समस्याएं मिलीं (किसी भी तरह से आउटपुट दूषित हो गया था), इसलिए मैंने कच्चा इस्तेमाल किया।
आप करने की जरूरत है एक मान्य JSON प्रतिक्रिया उत्पन्न, डॉक्स पेज Generating JSON output
// We assume that the whatver you do was a success.
$response = array("success" => true);
// You can also return something like:
$response = array("success" => false, "error"=> "Could not find ...");
// Get the document object.
$document = JFactory::getDocument();
// Set the MIME type for JSON output.
$document->setMimeEncoding('application/json');
// Change the suggested filename.
JResponse::setHeader('Content-Disposition','attachment;filename="result.json"');
echo json_encode($response);
आप आम तौर पर नियंत्रक में इस कोड डाल की जाँच (यदि आप एक मॉडल फोन करेगा जो वापस आ जाएगी, तो आपके द्वारा एन्कोड किया गया डेटा - एक बहुत ही सामान्य परिदृश्य)। यदि आपको इसे आगे ले जाने की आवश्यकता है, तो आप कच्चे उदाहरण के समान JSON व्यू (view.json.php) भी बना सकते हैं।
सुरक्षा
अब जब कि Ajax अनुरोध काम कर रहा है, पृष्ठ अभी तक बंद नहीं करते। नीचे दिया गया पढ़ें।
अनुरोध फोर्जरी के लिए जाँच करना न भूलें। JSession::checkToken()
यहां काम में आते हैं। कैसे CSRF anti-spoofing to forms
बहुभाषी साइटों जोड़ने के बारे में दस्तावेज़ पढ़ें
यह हो सकता है कि अगर आप अनुरोध में भाषा नाम न भेजें, जूमला आप चाहते भाषा स्ट्रिंग का अनुवाद नहीं होंगे ।
किसी भी तरह से आपके अनुरोध पर लैंग पैराम (जैसे &lang=de
) को जोड़ने पर विचार करें।
जूमला 3.2 में नया! - Joomla! Ajax Interface
जूमला अब प्लगइन या मॉड्यूल में अजाक्स अनुरोध को संभालने का हल्का तरीका प्रदान करता है। आप जूमला का उपयोग करना चाह सकते हैं! अजाक्स इंटरफ़ेस यदि आपके पास पहले से कोई घटक नहीं है या यदि आपको पहले से मौजूद मॉड्यूल से अनुरोध करने की आवश्यकता है।
"पूरे पृष्ठ को प्रिंट किए बिना" का क्या मतलब है? कुछ प्रिंट नहीं करने के लिए? साथ ही, आप अपना पूरा AJAX अनुरोध नहीं दिखाते हैं, इसे समाप्त करना चाहिए}); । –
स्क्रीनशॉट को देखो। मैंने पूर्ण AJAX नहीं लिखा था, क्योंकि मुझे नहीं लगता कि यह महत्वपूर्ण है – Jonuux
मुझे नहीं लगता कि अपेक्षित आउटपुट क्या है? क्या कुछ भी होना चाहिए? उदाहरण के लिए –