2009-06-02 13 views
5

कल्पना कीजिए कि किसी उपयोगकर्ता ने अभी आपके वेब एप्लिकेशन पर डेटा पोस्ट किया है और आप वर्तमान पृष्ठ को अपनी सफलता या विफलता के संदेश के साथ दोबारा प्रदर्शित करना चाहते हैं। यह जटिल हो जाता है।आप HTTP पोस्ट से प्रेषित सभी तरीकों को कैसे संभालेंगे?

यदि डेटा मान्य है और उपयोगकर्ता एचटीएमएल की उम्मीद कर रहा है, तो आप एक रीडायरेक्ट जारी करना चाहते हैं ताकि ताज़ा करने से उन्हें फिर से पोस्ट नहीं किया जा सके। यदि आप मौजूद हैं, तो आप रेफरर पर रीडायरेक्ट करना चाहते हैं, और एक संदेश प्रदर्शित करना चाहते हैं। अगर वे एचटीएमएल की उम्मीद नहीं कर रहे हैं, तो आप बस 200 ओके वापस कर सकते हैं।

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

मुझे लगता है कि मैं खुद को इस मूर्ख नृत्य को कई बार कर रहा हूं। तो सवाल हैं:

1) आप इस पूरी प्रक्रिया को कैसे सार करेंगे ताकि कोई भी फॉर्म पोस्ट इसका लाभ उठा सके?

2) अपने पसंदीदा वेब ढांचे में इसे प्राप्त करने के लिए सबसे अधिक बनाए रखने योग्य या कम से कम दोहराव तरीका क्या है?

3) क्या आप इस पूरी प्रक्रिया में कुछ भी बदल देंगे जो इसे आसान बना देगा?

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

आइडिया 2: कोई सामान्य HTTP पोस्ट न करें। केवल AJAX का उपयोग करें। अब आपको प्रतिपादन या पुनर्निर्देशन के बारे में चिंता करने की ज़रूरत नहीं है। यह केवल तभी उपयोगी होगा यदि आपके पास पहले से ही AJAX-भारी एप्लिकेशन है।

उत्तर

0

जावास्क्रिप्ट की आवश्यकता के बिना सभ्य वेब एप्लिकेशन बनाना बहुत अधिक काम है। मैं इन परिस्थितियों में AJAX का उपयोग करने जा रहा हूं।

3

आइडिया 2 खिड़की से बाहर है। यह एक भयानक विचार है और बिल्कुल जरूरी नहीं है। AJAX अच्छा है, लेकिन इसे अधिक नहीं है। उल्लेख नहीं है - जावास्क्रिप्ट के साथ उपयोगकर्ताओं के उस हिस्से के बारे में क्या अक्षम है?

मुझे लगता है कि आप इसके बारे में क्या सोच रहे हैं (वास्तव में इसे जानने के बिना) Post/Redirect/Get पैटर्न है। जब यह आता है तो यह सबसे अच्छा अभ्यास है, और आपको इसका पालन करना चाहिए। असल में, जैसा कि आपने कहा था, आप कभी भी रीडायरेक्ट के अलावा किसी अन्य चीज़ द्वारा पोस्ट का जवाब नहीं देते हैं। जहां तक ​​अधिसूचनाएं हैं, अधिकांश समय आप जानते हैं जहां वे विशेष कार्रवाई के कारण से आ रहे हैं। यदि आप नहीं करते हैं, तो HTTP संदर्भ एक सभ्य विकल्प है। हां इसे अक्षम किया जा सकता है, लेकिन यदि आपके उपयोगकर्ताओं का ~ 1% है, तो वह। जहां तक ​​अधिसूचनाएं हैं, सत्र इसके लिए बिल्कुल सही हैं। बस मौजूदा सत्र में कोड और संदेश संग्रहीत करें और अपने टेम्पलेट को उनके बारे में अवगत कराएं। संदेश मौजूद है अगर यह मौजूद है और सत्र चर हटा दें।

+0

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

0

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

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

+0

पोस्टबैक क्या है? राज्य क्या है? –

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