ฉันใช้PHP , ExtJSและร้านอาแจ็กซ์
ส่งข้อมูล (เมื่อสร้างอัปเดตทำลาย) ไม่อยู่ใน POST หรือ GET ในคอนโซล Chromeฉันเห็นพารามิเตอร์ขาออกเป็น JSON ในช่อง " ขอเพย์โหลด " $ _POST และ$ _GETว่างเปล่า
จะดึงข้อมูลใน PHP ได้อย่างไร?
ฉันใช้PHP , ExtJSและร้านอาแจ็กซ์
ส่งข้อมูล (เมื่อสร้างอัปเดตทำลาย) ไม่อยู่ใน POST หรือ GET ในคอนโซล Chromeฉันเห็นพารามิเตอร์ขาออกเป็น JSON ในช่อง " ขอเพย์โหลด " $ _POST และ$ _GETว่างเปล่า
จะดึงข้อมูลใน PHP ได้อย่างไร?
คำตอบ:
ถ้าฉันเข้าใจสถานการณ์อย่างถูกต้องคุณแค่ส่งข้อมูล json ผ่าน http body แทนที่จะเป็นapplication/x-www-form-urlencoded
data
คุณสามารถดึงข้อมูลนี้ด้วยตัวอย่างนี้:
$request_body = file_get_contents('php://input');
หากคุณกำลังผ่าน json คุณสามารถทำได้:
$data = json_decode($request_body);
$data
จากนั้นมีข้อมูล json คืออาร์เรย์ php
php://input
เป็นที่เรียกว่าเสื้อคลุม
php: // input เป็นสตรีมแบบอ่านอย่างเดียวที่อนุญาตให้คุณอ่านข้อมูลดิบจากเนื้อหาคำขอ ในกรณีของคำขอ POST แนะนำให้ใช้ php: // input แทน $ HTTP_RAW_POST_DATA เนื่องจากไม่ได้ขึ้นอยู่กับคำสั่งพิเศษของ php.ini ยิ่งไปกว่านั้นสำหรับกรณีที่ไม่มีการเติมข้อมูล $ HTTP_RAW_POST_DATA ตามค่าเริ่มต้นอาจเป็นทางเลือกที่ใช้หน่วยความจำน้อยกว่าในการเปิดใช้งาน always_populate_raw_post_data php: // input ไม่สามารถใช้ได้กับ enctype = "multipart / form-data"
นอกจากนี้คุณสามารถตั้งค่า extJs writer
ด้วยและจะส่งข้อมูลเป็นประจำ (และด้วยเหตุนี้คุณจะสามารถดึงข้อมูลผ่าน และ)encode
: true
$_POST
$_GET
... ค่าจะถูกส่งเป็นส่วนหนึ่งของพารามิเตอร์การร้องขอซึ่งตรงข้ามกับโพสต์ดิบ (ผ่านเอกสารสำหรับการเข้ารหัส config ของ Ext.data.writer.Json)
UPDATE
เอกสารยังบอกด้วยว่า:
ควรตั้งค่าอ็อพชันการเข้ารหัสเป็น true เมื่อกำหนดรูทเท่านั้น
ดังนั้นอาจจะwriter
's root
ตั้งค่าเป็นสิ่งจำเป็น
writer
root แล้วหรือยัง? อาจจำเป็นต้องใช้ encode
ทำงานให้ฉันimageshack.us/f/32/20120308153201.png