रिक्वेस्ट पेलोड कैसे प्राप्त करें


118

मैं PHP , ExtJS और ajax स्टोर का उपयोग कर रहा हूं

यह POST या GET में डेटा (निर्माण, अद्यतन, नष्ट) पर भेजता है। में क्रोम कंसोल मैं "में JSON के रूप में मेरे बाहर जाने वाले पैरामीटर को देखने का अनुरोध पेलोड " क्षेत्र। $ _POST और $ _GET खाली हैं।

PHP में इसे कैसे पुनः प्राप्त करें?

जवाबों:


257

यदि मैं स्थिति को सही ढंग से समझता हूं, तो आप डेटा के बजाय http बॉडी के माध्यम से सिर्फ json डेटा पास कर रहे हैं application/x-www-form-urlencoded

आप इस स्निपेट के साथ यह डेटा प्राप्त कर सकते हैं:

$request_body = file_get_contents('php://input');

यदि आप json गुजर रहे हैं, तो आप कर सकते हैं:

$data = json_decode($request_body);

$data तब json डेटा php एरे होता है।

php://inputएक तथाकथित आवरण है

php: // इनपुट एक केवल पढ़ने वाली स्ट्रीम है जो आपको अनुरोध बॉडी से कच्चे डेटा को पढ़ने की अनुमति देता है। POST अनुरोधों के मामले में, $ HTTP_RAW_POST_DATA के बजाय php: // इनपुट का उपयोग करना बेहतर होता है क्योंकि यह विशेष php.ini निर्देशों पर निर्भर नहीं करता है। इसके अलावा, उन मामलों के लिए जहां $ HTTP_RAW_POST_DATA डिफ़ॉल्ट रूप से पॉपुलेटेड नहीं है, यह हमेशा_पोपलेट_राव_पोस्ट_डेटा को सक्रिय करने के लिए संभावित रूप से कम मेमोरी गहन विकल्प है। php: // input enctype = "मल्टीपार्ट / फॉर्म-डेटा" के साथ उपलब्ध नहीं है।


2
मैं डेटा पुनः प्राप्त कर सकता हूं। धन्यवाद। !
नखत

7
आपको बहुत - बहुत धन्यवाद! मैं इस जवाब को दिनों से खोज रहा हूं, और मुझे लगता है कि मैं पागल था।
ज़ाचो

हेडर अनुप्रयोग / json है
एंजेलिन नादर

@AngelinNadar तब यह उत्तर लागू होता है।
इक्के

यदि लारवेल का उपयोग करते हुए बस एक सहायक फ़ंक्शन बनाएं जो 1. इस स्ट्रिंग को पुनर्प्राप्त करता है और 2. json_decodes। तब यह इनपुट से एक सरणी से अलग नहीं होगा :: all (); एक तरफ नहीं यह शायद हर किसी के लिए भी काम करेगा।
माइकल जे। कैलकिंस

12

इसके अलावा, आप extJs के writerसाथ सेटअप कर सकते हैं और यह नियमित रूप से डेटा भेजेगा (और, इसलिए, आप डेटा को पुनः प्राप्त करने में सक्षम होंगे ) और ।encode: true$_POST$_GET

... मानों को अनुरोध पैरामीटर के भाग के रूप में एक कच्ची पोस्ट (विरोध के लिए डॉक्स के माध्यम से Ext.data.writer.Json के सांकेतिक विन्यास के लिए) के रूप में भेजा जाएगा।

अपडेट करें

डॉक्स भी कहते हैं कि:

जब कोई रूट परिभाषित किया जाता है तो एन्कोड विकल्प केवल सच पर सेट होना चाहिए

तो, शायद, writerके rootविन्यास की आवश्यकता है।


@NikitaKuhta, क्या आपने writerरूट कॉन्फिग सेट किया है ? इसकी आवश्यकता हो सकती है। encodeमेरे लिए काम करता है imageshack.us/f/32/20/2018308153201.png
आणविक मैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.