2010-01-06 20 views
5

मेरे पास एक स्व-लुढ़का हुआ एमवीसी ढांचा है जो मैं बना रहा हूं, और इस बिंदु तक किसी भी AJAX कॉल की आवश्यकता से बचने में कामयाब रहा है। अब, हालांकि, मैं एक वास्तविक समय अद्यतन फ़ीड बनाना चाहता हूं।एमवीसी अजाक्स कॉल - उन्हें कहां संभालना है?

मेरा सवाल यह है कि AJAX कॉल के लिए हैंडलर आमतौर पर एक एमवीसी में संग्रहीत होते हैं? क्या मुझे उन्हें एक ही नियंत्रक में स्टोर करना चाहिए जो कॉल करने में शामिल है?

उदाहरण के लिए, यदि मेरा डोमेन www.example.com/browse/blogs (ब्राउजर नियंत्रक है, ब्लॉग विधि है) ब्लॉग की एक अद्यतन सूची के लिए AJAX कॉल कर रहा है, तो कॉल बस www के लिए होगा। example.com/browse/update_list या कुछ?

या, तो यह एक अलग AJAX- केवल नियंत्रक के लिए हो सकता है? www.example.com/ajax/update_blogs

आप इसे कैसे करते हैं?

उत्तर

2

मैं कहना चाहता हूँ एक Ajax अनुरोध वास्तव में एक गैर अजाक्स एक के रूप में एक ही है: यह ठीक उसी तरह काम करता है, वास्तव में, HTTP प्रोटोकॉल के देखने के एक बिंदु से।

फर्क सिर्फ इतना है कि आप, कुछ गैर-स्वरूपित डेटा लौट रहे हैं JSON या XML रूप, या केवल एक हिस्से एक HTML पृष्ठ के (हे, यह एक एटम फ़ीड ^^ पैदा करने के समान है) है।

तो, मैं उनको किसी अन्य "सामान्य" HTTP अनुरोध के रूप में मानता हूं, और उन्हें गैर-अजाक्स अनुरोधों के लिए वैसे ही रखता हूं।


एक अर्ध-वैकल्पिक विचार आपके नियंत्रक में केवल एक ही क्रिया हो सकता है: /browse/blogs - और हमेशा उसे कॉल करें।

लेकिन, यह होगा पता लगाने होगा अगर यह एक Ajax अनुरोध या नहीं के माध्यम से किया जा रहा है, और:

  • वापसी एक पूरा पृष्ठ यदि एक "सामान्य" अनुरोध
  • या वापसी केवल कुछ डेटा के माध्यम से कहा जाता है (या पेज का एक हिस्सा) यदि एक Ajax अनुरोध

नोट के माध्यम से कहा जाता है कि एक "जंगली" विचार नहीं है; Zend फ्रेमवर्क, उदाहरण के लिए, कि सुविधा के लिए (12.8.4.3. ContextSwitch and AjaxContext देखें)

0

भले ही आप एएसपीनेट एमवीसी का उपयोग नहीं कर रहे हैं, मैं आपको नीरस डिनर ट्यूटोरियल, विशेष रूप से AJAX अनुभाग को देखने की सलाह दूंगा। यह आपके कुछ डिज़ाइन सवालों के जवाब देने में मदद करेगा।

उनके पास एक ही नियंत्रक पर एक अलग कार्रवाई है।

http://www.wrox.com/WileyCDA/Section/id-321793.html

8

सर्वश्रेष्ठ अभ्यास तथ्य यह एक AJAX अनुरोध पूरी तरह से है उपेक्षा हो सकता है और केवल अपने आप को क्या नियंत्रक आपके AJAX अनुरोध करने के लिए उचित है साथ चिंता का विषय के लिए कुछ सामान प्रदान करता है। यदि आपके पास पकड़ने के लिए सभी AJAX नियंत्रक थे, तो आप बोलने के लिए सेब को समूहित कर सकते हैं, इसलिए बोलने के लिए।

मुख्य अंतर यह है कि AJAX अनुरोधों के लिए आपको किसी लेआउट (और संभावित दृश्य से अधिक) डेटा सेट करने से बचने की आवश्यकता होगी। यह आपके माता-पिता नियंत्रक वर्ग में एक विधि होने से आसानी से उपचार किया जा सकता है जो वैध AJAX अनुरोधों की जांच करता है:

protected function isAjax() 
{ 
    return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 
      $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'); 
} 
+1

यह बढ़िया है!मुझे नहीं पता था कि मैं इसे इस तरह से देख सकता हूं :) मैंने हमेशा "? Call_type = AJAX" का उपयोग किया :) धन्यवाद, आपने मेरा दिन बनाया!))) – oyatek

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