मुझे पता है कि एक्सएचटीएमएल नेस्टेड फॉर्म टैग का समर्थन नहीं करता है और मैंने इस विषय के बारे में स्टैक ओवरफ्लो पर अन्य उत्तर पहले ही पढ़ लिए हैं, लेकिन मैंने अभी भी समस्या का एक सुरुचिपूर्ण समाधान नहीं निकाला है।
कुछ लोग कहते हैं कि आपको इसकी आवश्यकता नहीं है और वे सोच भी नहीं सकते कि यह एक ऐसा परिदृश्य है जिसकी आवश्यकता होगी। खैर, व्यक्तिगत रूप से मैं ऐसे परिदृश्य के बारे में नहीं सोच सकता, जिसकी मुझे आवश्यकता नहीं है।
आइए देखें एक बहुत ही सरल उदाहरण:
आप एक ब्लॉग ऐप बना रहे हैं और आपके पास नई पोस्ट बनाने के लिए कुछ फ़ील्ड्स के साथ एक फॉर्म है और "एक्शन" जैसे "सेव", "डिलीट", "कैंसल" जैसे टूलबार हैं।
<form
action="/post/dispatch/too_bad_the_action_url_is_in_the_form_tag_even_though_conceptually_every_submit_button_inside_it_may_need_to_post_to_a_diffent_distinct_url"
method="post">
<input type="text" name="foo" /> <!-- several of those here -->
<div id="toolbar">
<input type="submit" name="save" value="Save" />
<input type="submit" name="delete" value="Delete" />
<a href="/home/index">Cancel</a>
</div>
</form>
हमारा उद्देश्य इस तरह से फॉर्म को लिखना है जिसमें जावास्क्रिप्ट की आवश्यकता नहीं है , बस सादे पुराने HTML फॉर्म और बटन सबमिट करें।
चूंकि एक्शन URL फॉर्म टैग में परिभाषित किया गया है और प्रत्येक व्यक्ति सबमिट बटन में नहीं है, हमारा एकमात्र विकल्प जेनेरिक URL पर पोस्ट करना है और फिर बटन का नाम निर्धारित करने के लिए "यदि ... फिर ... और" शुरू करना है सबमिट किया गया था। बहुत सुंदर नहीं है, लेकिन हमारी एकमात्र पसंद है, क्योंकि हम जावास्क्रिप्ट पर भरोसा नहीं करना चाहते हैं।
एकमात्र समस्या यह है कि "हटाएं" दबाते हुए, सर्वर पर सभी फॉर्म फ़ील्ड को सबमिट करेंगे, भले ही इस कार्रवाई के लिए केवल एक चीज की आवश्यकता हो, जो पोस्ट-आईडी के साथ एक छिपा हुआ इनपुट है। इस छोटे से उदाहरण में बहुत बड़ी बात नहीं है, लेकिन मेरे एलओबी में खेतों और टैब के सैकड़ों (बोलने के लिए) के साथ फॉर्म हैं अनुप्रयोगों (क्योंकि आवश्यकताओं के कारण) सब कुछ एक बार में जमा करना पड़ता है और किसी भी मामले में यह बहुत अक्षम लगता है और एक बेकार। यदि फॉर्म नेस्टिंग का समर्थन किया गया था, तो मैं कम से कम "डिलीट" सबमिट बटन को लपेटने में सक्षम हो जाएगा, यह केवल फॉर्म के बाद के आईडी फ़ील्ड के साथ है।
आप कह सकते हैं "बस सबमिट के बजाय लिंक के रूप में" हटाएं "को लागू करें"। यह इतने सारे स्तरों में गलत होगा, लेकिन सबसे महत्वपूर्ण बात यह है कि यहां "हटाएं" जैसे साइड-इफेक्ट क्रियाएं कभी भी GET अनुरोध नहीं होनी चाहिए।
तो मेरा प्रश्न (विशेष रूप से उन लोगों के लिए जो कहते हैं कि उन्हें घोंसले के शिकार की आवश्यकता नहीं है) आप क्या करते हैं? क्या कोई सुंदर समाधान है जो मुझे याद आ रहा है या नीचे की रेखा वास्तव में "या तो जावास्क्रिप्ट की आवश्यकता है या सब कुछ सबमिट करें"?