2010-06-04 13 views
15

HTTP spec का कहना है कि एक POST अनुरोध में डेटा का मनमाना शरीर हो सकता है।HTML फ़ॉर्म का उपयोग करते समय HTTP अनुरोध निकाय में डेटा कैसे भेजें?

एक HTML form तत्व एक यूआरएल के लिए पोस्ट कर सकते हैं और input तत्व शामिल हो सकते हैं, लेकिन वे input तत्वों एक क्वेरी स्ट्रिंग में बदल जाते हैं।

मैं HTTP पोस्ट अनुरोध के शरीर में डेटा के साथ भेजने के लिए form कैसे प्राप्त कर सकता हूं, जो सबमिट बटन दबाए जाने पर भेजता है?

उत्तर

4

जब बटन दबाया जाता है और फ़ॉर्म सबमिशन रद्द कर दिया जाता है तो AJAX अनुरोध भेजने के लिए जावास्क्रिप्ट का उपयोग करें। फॉर्म सबमिशन हमेशा नाम/मूल्य जोड़े होंगे। एक्सफॉर्म कस्टमाइज्ड डेटा भेज सकते हैं, लेकिन यदि यह सार्वजनिक उपयोग के लिए है, तो एक्सफॉर्म का इस्तेमाल होने वाले अधिकांश ब्राउज़रों द्वारा एक्सफॉर्म समर्थित होने से कई साल पहले होंगे।

+1

यदि मैं पोस्ट करने के लिए AJAX का उपयोग करता हूं, तो ब्राउज़र स्वचालित रूप से HTTP प्रतिक्रिया को संभाल नहीं लेगा, और मैं इसे चाहता हूं। दूसरे शब्दों में, मैं इस प्रश्न का उत्तर ढूंढ रहा हूं जो जावास्क्रिप्ट पर निर्भर नहीं है, बल्कि सिर्फ HTML है। –

7

HTTP spec का कहना है कि एक POST अनुरोध में डेटा का मनमाना शरीर हो सकता है।

यह सही है। बदले में उस डेटा के प्रारूप के कई विनिर्देश हैं। एचटीएमएल रूपों के मामले में, आमतौर पर application/x-www-form-urlencoded का उपयोग किया जाता है, इसके बाद multipart/form-data होता है। आप इसे enctype HTML <form> तत्व की विशेषता के माध्यम से सेट कर सकते हैं। HTML विनिर्देश के अध्याय 17.13.4 Form Content Types को भी देखें।


एक HTML प्रपत्र तत्व एक यूआरएल के लिए पोस्ट कर सकते हैं और इनपुट तत्व शामिल हो सकते हैं, लेकिन जो इनपुट तत्वों एक क्वेरी स्ट्रिंग में बदल जाते हैं।

वास्तव में कैसे काम करता है application/x-www-form-urlencoded है। ध्यान दें कि यह क्वेरी स्ट्रिंग वास्तव में पूरे HTTP अनुरोध निकाय का प्रतिनिधित्व करती है! तो जैसा कि आपको लगता है कि अनुरोध निकाय निश्चित रूप से खाली नहीं है।


मैं कैसे प्राप्त कर सकते हैं एक रूप भी HTTP POST अनुरोध भेजता है कि जब इसकी सबमिट बटन के शरीर में डेटा के साथ भेजने के लिए दबाया जाता है?

यह वास्तव में पहले से ही ऐसा करता है।

<form onsubmit="this.source.value=this.outerHTML"> 
    ... 
    <input type="hidden" name="source" /> 
    <input type="submit" /> 
</form> 

पूरे HTML: आप प्रपत्र पर ही के HTML डोम पेड़ प्रतिनिधित्व, के रूप में कुछ हद तक पिछले बयान में संकेत दिया की एक प्रति भेजने के लिए intented है, तो आप जो JavaScript की थोड़ी सी सहायता से इस प्रकार प्राप्त कर सकते हैं फॉर्म का डोम वृक्ष प्रतिनिधित्व तब source नाम के साथ अनुरोध पैरामीटर के रूप में उपलब्ध स्ट्रिंग प्रारूप में है।

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