क्या मुझे अपने JSON प्रतिक्रिया में HTML मार्कअप को शामिल करना चाहिए?


13

ई-कॉमर्स साइट में, किसी आइटम को कार्ट में शामिल करते समय, मैं उन विकल्पों के साथ एक पॉपअप विंडो दिखाना चाहूंगा जो आप चुन सकते हैं। कल्पना कीजिए कि आप आईपॉड शफल का आर्डर दे रहे हैं और अब आपको उत्कीर्ण करने के लिए रंग और टेक्स्ट का चयन करना है।

मैं खिड़की को मोडल बनाना चाहूंगा, इसलिए मैं एक अजाक्स कॉल द्वारा आबादी वाले लाइटबॉक्स का उपयोग कर रहा हूं । अब मेरे पास दो विकल्प हैं:

विकल्प 1: केवल डेटा भेजें, और जावास्क्रिप्ट का उपयोग करके HTML मार्कअप उत्पन्न करें

इसके बारे में क्या अच्छा है कि यह अजाक्स अनुरोध को न्यूनतम तक सीमित करता है और मार्कअप के साथ डेटा को नहीं मिलाता है।

इसके बारे में ऐसा बहुत अच्छा नहीं है कि अब मुझे अपना प्रतिपादन करने के लिए जावास्क्रिप्ट का उपयोग करने की आवश्यकता है, बजाय सर्वर-साइड पर एक टेम्प्लेट इंजन रखने के लिए। मैं क्लाइंट-साइड टेंपलेटिंग समाधान का उपयोग करके दृष्टिकोण को थोड़ा साफ करने में सक्षम हो सकता हूं ।

विकल्प 2: HTML मार्कअप भेजें

इसके बारे में क्या अच्छा है कि मैं एक ही सर्वर-साइड टेंपलेटिंग इंजन रख सकता हूं जिसका उपयोग मैं अपने रेंडरिंग कार्यों (Django) के बाकी हिस्सों के लिए कर रहा हूं, लाइटबॉक्स का प्रतिपादन करें। जावास्क्रिप्ट का उपयोग केवल पृष्ठ में HTML टुकड़ा डालने के लिए किया जाता है। तो यह स्पष्ट रूप से प्रतिपादन इंजन को छोड़ देता है। मेरी समझ मे आ रहा है।

लेकिन मैं किसी कारण से अजाक्स कॉल में डेटा और मार्कअप को मिलाने में सहज महसूस नहीं करता। मुझे यकीन नहीं है कि मुझे इसके बारे में असहज महसूस हो रहा है। मेरा मतलब है, यह उसी तरह है जैसे हर वेब पेज पर डेटा - मार्कअप - राइट किया जाता है?


बड़ा सवाल है। लेकिन स्टैकओवरफ्लो से संबंधित लगता है।
सईद नेमाटी

1
@SaeedNeamati सॉफ़्टवेयर डिज़ाइन प्रश्न, विशेष रूप से व्हाइटबोर्ड-वाई वैचारिक प्रश्न जैसे कि यह ऑन-टॉपिक यहाँ हैं और स्टैक ओवरफ़्लो पर ऑफ़-टॉपिक

जवाबों:


10

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


2
पुन: उपयोग के बारे में महान बिंदु। सभी को लगता है कि अजाक्स के लिए वोटिंग केवल विभिन्न कारणों से डेटा, और कोई मार्कअप नहीं है। लेकिन यह एक बड़ा एक है। धन्यवाद।
माइक एम। लिन

2
यह उल्लेख करने के लिए नहीं कि JSON बिना मार्कअप छोटा है और कम बैंडविड्थ का उपयोग करता है।

@ जेकमैन: एक अच्छी बात। लेकिन अतिरिक्त बैंडविड्थ की असली लागत यह सब नहीं है क्योंकि आप पहले से ही HTTP अनुरोध की लागत खाते हैं। और मैं कुछ सेटअपों की कल्पना कर सकता हूं जहां आप जानते हैं कि ग्राहक मशीनें इतनी भद्दी हैं कि जावास्क्रिप्ट का उपयोग करके डोम वास्तविक समय उत्पन्न करने के लिए आपको अधिक लागत आएगी। सोचो: प्राचीन मशीनों / ब्राउज़रों पर उपयोगकर्ताओं के साथ आंतरिक एप्लिकेशन।
माइक एम। लिन

3

मैं अनुरोध में डेटा भेजूंगा और js में मार्कअप का निर्माण करूंगा। एक अतिरिक्त लाभ यह होगा कि कम बैंडविड्थ उपयोग होगा। यह एक व्यक्तिगत पसंद है, लेकिन क्लाइंट साइड मार्कअप को सर्वर साइड से दूर रखना शायद एक बेहतर विचार है। मेरे पास एक Django वेबसाइट भी है और मैं केवल अपने मशीन पर विकसित होने के दौरान पृष्ठ पर कुछ जोंस वैरिबल्स (एक कम ajax req। बनाने के लिए) और src फ़ाइलों का उपयोग करने के लिए अस्थायी प्रणाली का उपयोग करता हूं। ग्राहक पक्ष के सभी एक्सटीजेएस के साथ किया जाता है।


मुझे पृष्ठ में JSON डेटा को जलाने का आपका विचार पसंद है - जब तक मैं अतिरिक्त डेटा नहीं प्राप्त कर लेता, जब तक मुझे पता नहीं होता कि आप अपने कार्ट में क्या आइटम जोड़ रहे हैं। पृष्ठ लेआउट के लिए एक अनुरोध करना, फिर इन दिनों डेटा के लिए एक दूसरा आम लगता है। जावास्क्रिप्ट चर में डेटा होने से कोड के दो अलग-अलग बिट्स (यानी, क्लाइंट और सर्वर) के बिना दूसरे HTTP अनुरोध की आवश्यकता समाप्त हो जाती है।
माइक एम। लिन

ओह, मैं देख रहा हूं कि आपका सर्वर यह जानने के लिए पर्याप्त उन्नत नहीं है कि उपयोगकर्ता कार्ट में पहले से क्या डालने जा रहा है;)।
जुले

1

मुझे लगता है कि आपने दोनों के पेशेवरों और विपक्षों के बारे में बात की है। क्यों नहीं अपने लाइटबॉक्स के लिए जावास्क्रिप्ट के एक 3 विकल्प को देखने के लिए एक django दृश्य से उत्पन्न होता है। फिर आपके JSON में प्रत्येक दृश्य के लिए इसे अपडेट करने के लिए डेटा है?

आपको जो करने में सक्षम होना चाहिए वह सभी टेम्प्लेटिंग कोड को जावास्क्रिप्ट चर में लपेटता है और फिर क्लाइंट पक्ष पर JSON अनुरोध प्राप्त होने के बाद उन्हें जावास्क्रिप्ट के साथ आउटपुट करता है।


उत्तर के लिए धन्यवाद। यह वास्तव में मैं विकल्प 1 में क्या मतलब है। कंटेनर के रूप में लाइटबॉक्स पेज में जला दिया जाएगा लेकिन छिपा हुआ है। अजाक्स अनुरोध के JSON डेटा का उपयोग कंटेनर में सामग्री उत्पन्न करने के लिए किया जाएगा। HTML का उपयोग करके उस सामग्री को चिह्नित किया जाएगा। आपने विकल्प 1 की व्याख्या कैसे की? शायद वह मेरा तीसरा विकल्प हो सकता है।
माइक एम। लिन

मैं इस stackoverflow.com/questions/6008908/ की तर्ज पर कुछ सोच रहा था। फिर प्रारंभिक लोड होने के बाद डेटा को बदलने के लिए JSON का उपयोग करके
रयान गिबन्स

0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.