2010-09-06 13 views
6

मैं प्रपत्र निम्नलिखित है,एएसपी: request.form मूल्य वापस नहीं कर रहा है?

<form action="contact_us.asp" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
    <input name="firstname" type="text" id="firstname" size="30" /> 
    <input name="lastname" type="text" id="lastname" size="30" /> 
    <input type="submit" name="submit" id="submit" value="Submit" /> 
</form> 

लेकिन तब यह खाली रिटर्न जब मैं अपने ASP फ़ाइल contact_us.asp में इन पोस्ट चर के मूल्य प्राप्त करने की कोशिश कर रहा हूँ। कोड के नीचे है:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Untitled Document</title> 
</head> 
<% 

Dim FirstName, LastName, Email, Message 
FirstName = request.form("firstname") 
LastName = request.form("lastname") 

response.write(FirstName & "OK") 

%> 

इसका मुझे ओर लौटने केवल "ठीक है"। संदेश चर में कुछ भी नहीं?

कृपया मेरी मदद करें और मुझे बताएं कि यहां क्या गलत है?

+0

? उपरोक्त HTML में कोई '<इनपुट नाम =" संदेश "/>' (या उस मामले के लिए 'ईमेल') नहीं है। – bobince

+0

जब मैं एचटीएमएल टैग से 'enctype =" multipart/form-data "हटा देता हूं तो यह ठीक काम करता है और लौटने वाला मान देता है। – Prashant

+1

यदि आपको फ़ाइल अपलोड करने की आवश्यकता नहीं है तो आप enctype = "multipart/form-data" को हटा सकते हैं – Cris

उत्तर

18

क्लासिक एएसपी multipart/form-data का समर्थन नहीं करता है। एएसपी की आदरणीय उम्र की भाषा के लिए यह आश्चर्यजनक रूप से बुनियादी कमी है, लेकिन आप इसके बारे में क्या कर रहे हैं, एएसपी.नेट पर जाएं? (हाँ? ओह। अच्छी तरह से तो कोई बात नहीं।)

आप फ़ाइल अपलोड नहीं कर रहे हैं, तो यह सिर्फ डिफ़ॉल्ट enctype (जो application/x-www-form-urlencoded है) के साथ छड़ी के लिए सबसे आसान है। multipart/form-data का एकमात्र लाभ यह है कि आप इसमें फ़ाइल अपलोड डाल सकते हैं। (सैद्धांतिक रूप से, यह भी लाभ होगा कि आप निश्चित रूप से वर्ण एन्कोडिंग निर्दिष्ट कर सकते हैं। लेकिन कोई ब्राउज़र वास्तव में ऐसा नहीं करता है।)

यदि आपको क्लासिक एएसपी में multipart/form-data को संभालने की आवश्यकता है तो आपको आने वाले अनुरोध निकाय को स्वयं पार्स करने की आवश्यकता होगी, इसे खेतों और मूल्यों में विभाजित करना। या, अधिक आम तौर पर, इसे करने के लिए मौजूदा लाइब्रेरी का उपयोग करें *।

वह लाइब्रेरी आमतौर पर अपलोड की गई फ़ाइलों और अन्य फॉर्म मानों को पढ़ने के लिए अलग-अलग इंटरफेस प्रदान करेगी। यह क्लासिक एएसपी Request.Form इंटरफ़ेस का उपयोग पूरी तरह से बदल देता है। वास्तव में आप कहां पा सकते हैं यह आपके द्वारा चुने गए लाइब्रेरी पर निर्भर करता है। इसका मतलब यह है कि यदि आप एक ऐसा फॉर्म बनाना चाहते हैं जो enctype पर प्रतिक्रिया दे, तो आपको समान प्रकार की जांच करना होगा और दो अलग-अलग इंटरफेस में से एक का उपयोग करना होगा।

*: भार हैं। forexample। मैं इनमें से किसी भी का समर्थन नहीं कर रहा हूं ... उनमें से कोई भी वास्तव में मानक के अनुसार मल्टीपार्ट्स को सही तरीके से पार्स नहीं करता है और दोनों फ़ाइल नाम सुरक्षा के बारे में थोड़ी सी ढीला लगते हैं (कभी उपयोगकर्ता द्वारा सबमिट किए गए फ़ाइल नाम के तहत एक फ़ाइल संग्रहीत करें! सुरक्षा आपदा!)। लेकिन यह एएसपी अपलोड स्क्रिप्ट के लिए पाठ्यक्रम के बराबर लगता है। कम से कम, कई लोगों के विपरीत, वे उनके लिए पैसे नहीं मांग रहे हैं।

0

का उपयोग enctype="multipart/form-data"

निकालें कि कोड से करें और देखें कि यह काम करता है मत करो। form-data enctype का उपयोग डेटा अपलोड करने के लिए किया जाता है, उदाहरण के लिए छवि फाइलें। यदि आप enctype का उपयोग करते हैं तो आपको फॉर्म तत्वों को थोड़ा अलग तरीके से एक्सेस करने की आवश्यकता है।

यदि आप डेटा अपलोड कर रहे हैं, तो आप जिस एएसपी ऑब्जेक्ट का उपयोग कर रहे हैं (उदाहरण के लिए ASP Upload) में फॉर्म फ़ील्ड तक पहुंचने के लिए फ़ंक्शन होंगे। Request.form("") काम नहीं करेगा।

प्रपत्र मूल्यों होगा पहुँचना की तर्ज पर हो:

Set yourUploadComponent = CreateObject("Your.UploadComponentClassString") 
sFormValue = yourUploadComponent.Form.Item("txtName").Value 

आप वस्तुओं प्रलेखन पढ़ने के लिए की आवश्यकता होगी।

2

मैं enctype पूरी तरह से हटाने के द्वारा पाया (जो application/x-www-form-urlencoded करने के लिए डिफ़ॉल्ट) प्रपत्र टैग कि Request.Form("SomeInputTagId")method="post" के साथ ठीक काम किया है। मुझे किसी भी तृतीय पक्ष पाठकों को स्थापित करने की आवश्यकता नहीं थी। उम्मीद है की यह मदद करेगा।

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