2009-04-09 4 views
34

वहाँ एक अच्छी तरह से समर्थित, सामान्य व्यवहार है कि मैं अगर मैं HTML में कुछ इस तरह कर लिए हैं:क्या होता है यदि <form> में क्रिया फ़ील्ड पैरामीटर है?

<form method="get" action="/somePage.html?param1=foo&param2=foo"> 
    <input name="param2"></input> 
    <input name="param3"></input> 
</form> 

बात की इस तरह की तरह लगता है स्वाभाविक हास्यास्पद है, लेकिन मैंने देखा है यह यहां इस्तेमाल किया और वहां और मैं सोच रहा था कि पृथ्वी पर क्या अपेक्षित व्यवहार होना चाहिए। क्या ब्राउज़र "& param2 = जो भी & param3 = जो भी" कार्रवाई के लिए, या वे सिर्फ दूसरे प्रश्न चिह्न में फेंकते हैं "पर काम करने के लिए पर्याप्त स्मार्ट हैं? और क्या? क्या ऐसे मामले हैं जहां वास्तव में चीजों को करने का सही तरीका है?

+0

आप अपाचे का उपयोग कर रहे हैं और वैकल्पिक हल की जरूरत है, [एक और stackoverflow जवाब में से एक हैं] तो [1] [1]: http://stackoverflow.com/questions/1116019/submitting-a- get-form-with-query-string-params-and-hidden-params-गायब/# 16415773 – wanis

उत्तर

52

यदि विधि विशेषता GET पर सेट की गई है, तो ब्राउज़र प्रपत्र तर्क मानों को बनाने से पहले क्रिया विशेषता से क्वेरीस्ट्रिंग पैरामीटर को छोड़ देता है। /somePage.html?param2=value&param3=value

तो नहीं, विधि है जब "GET", अपने उदाहरण के रूप में, वहाँ यह करने के लिए कोई कारण नहीं है:

तो अपने उदाहरण में, प्रस्तुत पर सर्वर से अनुरोध की तरह दिखाई देगा।

+2

और यदि विधि विशेषता POST पर सेट की गई थी, तो दोनों संरक्षित किए जाएंगे। सर्वर के अनुरोध में क्वेरी स्ट्रिंग पर param1 = foo और param2 = foo होगा, और param2 (अलग-अलग मान के साथ) और param3 पोस्ट फॉर्म मानों के रूप में होगा। – thomasrutter

+0

@ थॉमसट्रटर काफी सही! मुझे लगता है कि इस चर्चा के दायरे से थोड़ा सा है। दिलचस्प हिस्सा स्पष्ट टक्कर है। –

+0

@Rex - मुझे लगता है कि यह आकर्षक है कि व्यवहार GET और POST के लिए अलग है। मुझे उम्मीद नहीं थी। क्या कोई तार्किक कारण है? –

17

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

<form method="get" action="/somePage.html"> 
    <input name="param2"></input> 
    <input name="param3"></input> 
    <input type="hidden" name="param1" value="foo" /> 
    <input type="hidden" name="param2" value="foo" /> 
</form> 
4

आप प्रपत्र पोस्ट करने से पहले स्क्रिप्ट के साथ फार्म के लिए "पोस्ट" में विधि विशेषता को बदल सकता है, इसलिए कार्रवाई में क्वेरी स्ट्रिंग के लिए एक उपयोग हो सकता है। हालांकि, यह शायद कुछ भी के लिए सबसे अच्छा समाधान प्रतीत होता है।

3

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

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