2010-07-28 20 views
22

AJAX करने का पसंदीदा तरीका क्या है।क्या आप अजाक्स JSON या HTML हैं?

यदि यह AJAX

तुम कैसे प्रतिक्रिया

क) प्रतिक्रिया सभी प्रासंगिक html/स्टाइल शामिल है संभाल होगा के लिए सर्वर का उपयोग कर PHP में लिखा एक खोज पृष्ठ के लिए था

या

बी) शुद्ध JSON भेजें और जावास्क्रिप्ट फ़ंक्शन जावास्क्रिप्ट चर के चारों ओर एचटीएमएल/स्टाइल का निर्माण करें।

मैं दोनों के लिए फायदे देख सकता हूं। 'ए' स्पष्ट रूप से आसान है जबकि 'बी' अधिक कुशल है (हालांकि gzip शायद अंतर को नगण्य बना देगा)।

+2

मुझे यकीन नहीं है कि 'ए' आसान है, कम से कम सभी परिस्थितियों में नहीं। 'बी' को आसान बनाने के लिए आपको बस एक अच्छा ऑब्जेक्ट-टू-जेसन लिब चाहिए। –

+1

स्टाइलिंग सीएसएस द्वारा वैसे भी किया जाना चाहिए। – MvanGeest

+0

@ मावन ये, मेरा मतलब सीएसएस – Pablo

उत्तर

4

मैं कहूंगा कि 'एक' विकल्प आपको ज्यादातर के साथ रहना चाहते हैं।

लगातार टेम्पलेट्स सर्वर पक्ष को रखना बहुत आसान है (आप उन्हें गैर AJAX परिदृश्यों में पुन: उपयोग कर सकते हैं)।

क्लाइंट-साइड templating के सुपर सुंदर नहीं है (मैं इस सुझाव है कि आप यह करने के लिए जा रहे हैं: http://ejohn.org/blog/javascript-micro-templating/)

स्टाइल के मामले में मैं एक minified स्टाइलशीट पृष्ठ लोड होने नहीं जब लोड हो रहा है को शामिल किया जाएगा सामग्री।

2

महत्वपूर्ण सवाल आप अपने आप को यहाँ है पूछने के लिए, यदि आपका लक्ष्य क्या है। आप

  • तार और कम ग्राहक cpu उपयोग
  • तार

पर और इस संदर्भ में एक और सवाल यह है कि में और अधिक ग्राहक CPU उपयोग और कम यातायात करना चाहते हैं पर अधिक यातायात करना चाहते हैं , आपकी साइट पर कितने लोग कॉल कर रहे हैं। यदि आपके पास एक दिन में सैकड़ों हजारों पृष्ठ आते हैं, तो आपको उदाहरण के लिए तार यातायात को कम करने पर विचार करना चाहिए।

ज्यादातर मामलों में, आप न केवल HTML मार्कअप जेनरेट करना चाहते हैं, बल्कि आप कुछ क्लाइंट को सामान्य डेटा भी भेजना चाहते हैं जिसे आप अपने ECMA-/Javascript में संभाल सकते हैं। इसलिए, JSON आपकी पहली पसंद होना चाहिए (यदि आपको डेटा के विशाल ब्लॉक से निपटने की ज़रूरत नहीं है)। JSON leightweight है और javascript साथ extremly तेजी से पार्स किया जा सकता।

तो अपने आप को दोहराने के लिए, चाहे अपने सर्वर पर एक पूरा प्रदान की गई मार्कअप पैदा करते हैं और एक ग्राहक के लिए है कि देने या ग्राहक काम तुम क्या करने की योजना बना रहे क्या पर निर्भर करता है करते हैं करने के लिए।

एक स्थैतिक पृष्ठ तुम क्या लगता है कि सही ढंग से, स्थिर है। लेकिन इसका मतलब क्लाइंट/ब्राउज़र के लिए कोई सीपीयू उपयोग नहीं है। इसलिए यदि आपको "गतिशील" पृष्ठ व्यवहार की आवश्यकता नहीं है/तो आप एक स्थिर पृष्ठ के साथ ठीक हैं।

2

मैं डिफ़ॉल्ट रूप से Json साथ जाना होगा। यह हल्का वजन (कम ओवरहेड) है, आसान-से-लागू डेटा-इंटरचेंज प्रारूप है। 'बी' को आसान बनाने के लिए आपको बस एक अच्छा ऑब्जेक्ट-टू-जेसन लिब चाहिए।

3

व्यक्तिगत रूप से, मैं ज्यादातर AJAX कॉल से HTML के स्निपेट लौटाता हूं, जब तक मुझे प्रोग्राम किए गए डेटा के साथ कुछ करने की आवश्यकता नहीं है। उदाहरण के लिए:

  • स्वत: पूर्ण कार्यक्षमता। डेटा के JSON सरणी को वापस करें, उपयुक्त तत्व बनाने के लिए जावास्क्रिप्ट का उपयोग करें।
  • कुछ भी जो वास्तव में डेटा का अनुरोध नहीं करता है, लेकिन वास्तव में इसे पोस्ट करता है। ऑनलाइन संपादन दिमाग में आता है। मैं आमतौर पर जेएसओएन प्रारूप में एक स्टेटस संदेश देता हूं।

कहा जा रहा है, जाहिर है, मुझे लगता है कि दोनों विकल्प मान्य हैं। मुझे यकीन है कि शुद्धवादी असहमत होंगे, लेकिन कभी-कभी सादा ओल 'एचटीएमएल लौटाना काफी अच्छा है।

5

मैं एचटीएमएल के साथ जाना होगा:

  • एचटीएमएल करने के लिए json से रूपांतरण कर ग्राहक धीमी कर देगा (और आप उपयोगकर्ता का क्लाइंट के प्रदर्शन के बारे में कुछ भी पता नहीं है)
  • यह कर json में मतलब है कि आप कन्वर्ट करने के लिए दो बार (अपने सर्वर का डेटा संरचना से json के लिए json से एचटीएमएल, तो)
  • आप शायद सर्वर पर पहले से HTML करने के लिए प्रतिपादन करते हैं, इसलिए आपको बुनियादी ढांचे
  • नेटवर्क यातायात अंतर है हो जाएगा लापरवाही
  • आप उन पुस्तकालयों का उपयोग कर सकते हैं जो आपके लिए सभी काम करते हैं (उदा। JQuery के साथ, एक AJAX कॉल जो एचटीएमएल देता है बस jQuery ('# div') बन जाता है। लोड (यूआरएल))।
0

JSON दृष्टिकोण डेटा और प्रस्तुति के तर्क पृथक्करण के कारण आकर्षक है। अगर भविष्य में कभी-कभी स्टाइल (प्रेजेंटेशन) को बदलने की ज़रूरत होती है, जो अनिवार्य रूप से घटित होता है, तो JSON डेटा को बदलने की आवश्यकता नहीं होगी, नहीं?

+0

ठीक है अगर आप हैं स्टाइलिंग परिवर्तन, आपको या तो अपने एचटीएमएल को अपडेट करना होगा (अगर एचटीएमएल लौटा रहा हो) या अपने जेएस और/या जेएस टेम्पलेट को अपडेट करें (जेएसओएन लौटने पर)। मेरी राय में, पूर्व थोड़ा आसान परिवर्तन होगा। –

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