किसी फ़ॉर्म को सबमिट करने के बाद, कोई विशेष फ़ील्ड मौजूद होने पर सर्वर-साइड कैसे जांचता है?वीबीस्क्रिप्ट में कोई पोस्ट सबमिट फ़ील्ड मौजूद है या नहीं?
If [Exists] Request("FieldName") Then
...
End If
किसी फ़ॉर्म को सबमिट करने के बाद, कोई विशेष फ़ील्ड मौजूद होने पर सर्वर-साइड कैसे जांचता है?वीबीस्क्रिप्ट में कोई पोस्ट सबमिट फ़ील्ड मौजूद है या नहीं?
If [Exists] Request("FieldName") Then
...
End If
जांचें कि यह खाली नहीं है या नहीं। वहाँ कुछ अलग तरीके हैं, लेकिन एक मैंने देखा है और अधिक अक्सर इस्तेमाल की तर्ज पर है:
If Request("FieldName") <> "" Then
'etc.
End If
मैं आमतौर पर स्पष्ट रूप से अगर मैं नीचे दिए गए कोड में से एक के कुछ बदलाव के साथ Form
और QueryString
संग्रह की जाँच एक या अन्य संदर्भ के आधार पर से चर प्राप्त किया जा सकता है:
Select Case True
Case Request.Form("FieldName") <> ""
'Run if the Form isn't empty
Case Request.QueryString("FieldName") <> ""
'Run if the QueryString isn't empty
Case Else
'Set a predefined default if they're both empty
End Select
या तो एक नेस्टेड ... तब:
If Request.Form("FieldName") <> "" Then
'Run if the Form isn't empty
ElseIf Request.QueryString("FieldName") <> "" Then
'Run if the QueryString isn't empty
Else
'Set a predefined default if they're both empty
End If
यदि मुझे पता है कि यह किस संग्रह से आ रहा है, तो मैं उस संग्रह को विशेष रूप से देखूंगा। इसका कारण यह है कि मैं यह सुनिश्चित करना चाहता हूं कि यह उस चीज़ को खींच रहा है जहां से मैं उम्मीद करता हूं कि मैं कहां से आने की उम्मीद करता हूं। मैं नहीं चाहता कि QueryString
में कुछ भेजकर Form
मान ओवरराइड कर रहा हो, जब मैं इसकी अपेक्षा नहीं कर रहा हूं।
MSDN से:
तो निर्दिष्ट चर पिछले पांच संग्रह में से एक में नहीं है, अनुरोध वस्तु खाली देता है।
सभी चरों को संग्रह नाम के बिना अनुरोध (चर) पर कॉल करके सीधे पहुंचा जा सकता है।इस मामले में, वेब सर्वर निम्न क्रम में संग्रह खोज:
- QueryString
- फार्म
- कुकीज़
- ClientCertificate
- ServerVariables
तो साथ एक चर एक ही नाम एक से अधिक संग्रह में मौजूद है, अनुरोध ऑब्जेक्ट फाई देता है आरएसटी उदाहरण है कि ऑब्जेक्ट मुठभेड़ों।
यह दृढ़ता से अनुशंसा की जाती है कि संग्रह के सदस्यों का जिक्र करते समय पूरा नाम उपयोग किया जाए। उदाहरण के लिए, अनुरोध के बजाय। ("AUTH_USER") Request.ServerVariables ("AUTH_USER") का उपयोग करें। यह सर्वर को आइटम को और अधिक तेज़ी से ढूंढने की अनुमति देता है।
If Request("FieldName").Count > 0 Then
...
End If
या, छोटे के लिए: उदाहरण के लिए:
If Request("FieldName").Count Then
...
End If
पृष्ठभूमि:
Request
संग्रह अब तक के रूप में यह एक त्रुटि जब फेंक नहीं है में, जादू है आप उस कुंजी तक पहुंचने का प्रयास करते हैं जो अनुरोध का हिस्सा नहीं था - लेकिन .Count
गैर-मौजूदा कुंजी के लिए 0 होगा।foo&bar&baz
foo=value1&foo=value2
जैसे प्रमुख प्रति एक ही कुंजी कई बार, यानि कि एक से अधिक मान भेजने के लिए, कानूनी है कानूनी है।इसलिए, क्लाइंट द्वारा एक कुंजी भेजी गई है या नहीं, यह निर्धारित करने का विश्वसनीय तरीका यह है कि क्लाइंट ने कितनी बार इसे भेजा है।
इस परीक्षण का एक विशेष मामला यह जांच रहा है कि उस कुंजी के लिए एक खाली खाली मूल्य था (If Request("FieldName") > ""
)। यह अंत में आप जो चाहते हैं हो सकता है या नहीं हो सकता है; बस जागरूक रहें कि क्वेरी स्ट्रिंग का अंतर्निहित व्यवहार उस से व्यापक है।
+1। यह वह विधि है जिसका उपयोग किया जाना चाहिए। –
मैं आमतौर पर सबमिट बटन का मूल्य जांचता हूं। यदि इसे क्लिक किया गया था, तो यह मान फ़ॉर्म डेटा के साथ पोस्ट किया गया है। इसलिए, भले ही आपका सभी फॉर्म डेटा खाली हो, सबमिट बटन का मान नहीं होगा। और यदि सबमिट बटन का मान खाली है, तो उसे क्लिक नहीं किया गया था।
if request("btn_Submit") <> "" Then
response.write "form was submitted"
end if
यह आपको एक जावास्क्रिप्ट form.submit() कॉल, जिस स्थिति में मैं आमतौर पर छिपी हुई फ़ील्ड के लिए चुनते उपयोग कर रहे हैं और अधिक कठिन है। यदि पैरामीटर मौजूद थे (अपने मूल्य के बारे में देखभाल के बिना)
जांच करने के लिए यह भी लिखने के लिए संभव है:
fieldValue = Request("FieldName")
if Not IsEmpty(fieldValue) ...
एक लाभ यह अधिक गणना विधि से ऊपर है, कि आप चर परीक्षण कर सकते हैं, का जिक्र किए बिना क्षेत्र का नाम फिर से। "" के लिए परीक्षण पर लाभ यह है कि यदि आप मूल्य निर्दिष्ट किए बिना & फ़ील्डनाम पास करते हैं, तो "" के लिए परीक्षण सही होगा, लेकिन IsEmpty झूठी रिटर्न देता है।
संपादित करें: यह आईआईएस में विश्वसनीय नहीं है।
जेएफटीआर: 'अन्यथा अगर' (अंतरिक्ष नोट करें) एक घोंसला सशर्त होगा। 'ElseIf' नहीं है। –
@AnsgarWiechers हाँ ... मेरा मूल उद्देश्य एक सही नेस्टेड के साथ जाना था, लेकिन मैं एक सहकर्मी द्वारा विचलित हो गया। : पी – AnonJr
फ़ील्ड मौजूद हो सकता है, लेकिन मूल्य केवल खाली हो सकता है। टॉमलाक का सही तरीका नीचे है। – bvmobileapps