2009-09-03 11 views
21

एजेक्स अनुरोध बनाते समय पोस्ट पर जीईटी की शक्तियां और इसके विपरीत क्या हैं? मुझे कैसे पता चलेगा कि मुझे किसी भी समय किस का उपयोग करना चाहिए? क्या यह एक सुरक्षा दिमागी निर्णय है?बनाम पोस्ट करें AJAX अनुरोध: कब और कैसे उपयोग करें?

इसके अलावा, वास्तव में उन्हें वास्तव में कैसे भेजा जाता है में अंतर क्या है?

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/715335/get-vs-post-in-ajax – trante

उत्तर

17

POST अनुरोध ऐसे अनुरोध हैं जिन्हें आप गलती से नहीं करना चाहते हैं। अनुरोध प्राप्त करें अनुरोध हैं कि आप एक यूआरएल के माध्यम से ब्राउज़र को इंगित करने वाले उपयोगकर्ता द्वारा ठीक होने के साथ ठीक हैं।

जीईटी अनुरोधों को काफी आसानी से दोहराया जा सकता है क्योंकि उनका डेटा यूआरएल में ही आधारित है।

आप AJAX के अनुरोधों के बारे में सोचना चाहिए की तरह आप नियमित रूप से प्रपत्र अनुरोध (और उनके प्राप्त और पोस्ट)

+0

हां, तो सुरक्षित रहने के लिए करता है, तो पृष्ठ सामान्यतः नहीं हैं पृष्ठों पर भेज दिया करने के लिए होती, मुझे सिर्फ POST चुनना चाहिए? – johnnietheblack

+2

विशेष रूप से हटाए गए चीजों के साथ। –

24

हो जाता है idempotent कार्यों के लिए इस्तेमाल किया जाना चाहिए के बारे में लगता है कि कार्य है कि सुरक्षित रूप से कुछ भी बदले बिना एक से अधिक बार दोहराया जा सकता है है । ब्राउज़र GET अनुरोधों को कैश करेगा (सामान्य और AJAX अनुरोधों के लिए)

POSTs को आम तौर पर गैर-बेवकूफ संचालन के लिए उपयोग किया जाना चाहिए, जैसे कुछ सहेजना। यद्यपि आप चाहते हैं कि आप अन्य परिचालनों के लिए उनका उपयोग कर सकें।

जीईटी के लिए डेटा यूआरएल क्वेरी स्ट्रिंग पर भेजा जाता है। POSTs के लिए डेटा अलग से भेजा जाता है। कुछ ब्राउज़रों में अधिकतम यूआरएल लम्बाई होती है (मुझे लगता है कि इंटरनेट एक्सप्लोरर 2048 वर्ण है), और यदि क्वेरी स्ट्रिंग बहुत लंबी हो जाती है तो आपको एक त्रुटि मिल जाएगी।

22

आपको AJAX कॉल में जीईटी और POST अनुरोधों का उपयोग करना चाहिए, जैसे आप सामान्य कॉल में जीईटी और POST अनुरोधों का उपयोग करेंगे। अंगूठे का मूल नियम:

अनुरोध आपके मॉडल में कुछ भी संशोधित करेगा?

  • हाँ: अनुरोध को संशोधित करेगा किसी अन्य तरीके से, के सर्वर (कारण निर्माण एक फ़ाइल की स्थिति बदलने उदाहरण के लिए आपके डेटा की दुकान से (जोड़ें/अपडेट करने/हटाने) डेटा, या)। पोस्ट का उपयोग करें।
  • नहीं: अनुरोध सर्वर पर कुछ भी (डेटाबेस, फ़ाइल सिस्टम, सत्र, ...) की स्थिति को प्रभावित नहीं करेगा, लेकिन केवल जानकारी पुनर्प्राप्त करेगा। जीईटी का प्रयोग करें।
3

याहू! मेल टीम ने पाया कि XMLHttpRequest का उपयोग करते समय, ब्राउज़र को दो चरणों की प्रक्रिया के रूप में ब्राउज़र में लागू किया जाता है: शीर्षलेख भेजकर, फिर डेटा भेजना। इसलिए जीईटी का उपयोग करना सबसे अच्छा है, जो केवल एक टीसीपी पैकेट भेजने के लिए लेता है (जब तक कि आपके पास बहुत सारी कुकीज़ न हों)। IE में अधिकतम URL लंबाई 2K है, इसलिए यदि आप 2K से अधिक डेटा भेजते हैं तो आप GET का उपयोग करने में सक्षम नहीं हो सकते हैं।

http://developer.yahoo.com/performance/rules.html#ajax_get

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