Yük Talebi nasıl alınır


118

Ben kullanıyorum PHP , ExtJS ve ajax mağaza .

POST veya GET'de olmayan verileri (oluşturma, güncelleme, yok etme) gönderir. In Krom Konsolundan ben "in JSON olarak Giden params bkz istek yükünü " alanına. $ _POST ve $ _GET boş.

PHP'de nasıl alınır?

Yanıtlar:


258

Durumu doğru anlarsam, json verilerini veri yerine http gövdesinden geçiriyorsunuz demektir application/x-www-form-urlencoded.

Bu verileri şu snippet ile getirebilirsiniz:

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

JSON'u geçiyorsanız, şunları yapabilirsiniz:

$data = json_decode($request_body);

$data daha sonra json verilerini içerir php dizisidir.

php://inputsözde bir sarmalayıcıdır .

php: // input, istek gövdesinden ham verileri okumanıza izin veren salt okunur bir akıştır. POST istekleri durumunda, özel php.ini yönergelerine bağlı olmadığı için $ HTTP_RAW_POST_DATA yerine php: // input kullanılması tercih edilir. Üstelik, $ HTTP_RAW_POST_DATA'nın varsayılan olarak doldurulmadığı durumlar için, always_populate_raw_post_data'yı etkinleştirmeye kıyasla daha az bellek yoğun bir alternatiftir. php: // input, enctype = "multipart / form-data" ile kullanılamaz.


2
Verileri alabilirim. Teşekkürler. !
nkuhta

7
Çok teşekkür ederim! Bu cevabı günlerdir arıyordum ve deli olduğumu düşündüm.
Zacho

başlık application / json
Angelin Nadar

@AngelinNadar O zaman bu cevap geçerlidir.
Ikke

Laravel kullanıyorsanız, basitçe bu dizgeyi alan ve 2. json_decodes yapan bir yardımcı işlev oluşturun. O zaman Input :: all () 'daki bir diziden farklı olmayacaktır; Bir yandan bu muhtemelen herkes için de işe yaramaz.
Michael J. Calkins

12

Ayrıca, writerile extJ'leri kurabilirsiniz ve düzenli olarak veri gönderecektir (ve dolayısıyla, ve ile veri alabileceksiniz ).encode: true$_POST$_GET

... değerler, ham gönderinin aksine istek parametrelerinin bir parçası olarak gönderilecektir (Ext.data.writer.Json'un kodlama yapılandırması için dokümanlar aracılığıyla )

GÜNCELLEME

Ayrıca dokümanlar şunu söylüyor:

Kodlama seçeneği, yalnızca bir kök tanımlandığında doğru olarak ayarlanmalıdır

Yani, muhtemelen, writer'un rootyapılandırması gereklidir.


@NikitaKuhta, writerkök yapılandırmasını ayarladınız mı? Gerekli olabilir. encodebenim için çalışıyor imageshack.us/f/32/20120308153201.png
Molecular Man
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.