Rumah > Artikel > rangka kerja php > Apakah yang perlu saya lakukan jika catatan thinkphp5 tidak mendapat nilai?
pos thinkphp5 tidak boleh mendapatkan nilai kerana TP5 menggunakan fungsi strpos untuk mencari rentetan aplikasi/json dalam nilai jenis kandungan Pengepala Penyelesaiannya adalah untuk menetapkan nilai jenis kandungan Pengepala kepada aplikasi /json Itu sahaja.
Persekitaran pengendalian tutorial ini: sistem Windows 7, ThinkPHP versi 5, komputer Dell G3.
thinkphp5 Apakah yang perlu saya lakukan jika siaran saya tidak mendapat nilai?
Penyelesaian kepada masalah yang ThinkPHP5 tidak dapat menerima parameter Json yang diluluskan oleh Pos klien
Saya sedang mempelajari pembangunan API dalam tempoh ini, dan saya telah mengambil kursus dari Internet dan saya mengikutinya Baru semalam, saya sekali lagi menghadapi situasi di mana pensyarah membiarkan saya menyahpepijat selama setengah hari Masalah yang saya hadapi ialah apabila saya menggunakan Posman untuk menguji antara muka Pos tertentu. tidak kira bagaimana saya menghantar permintaan, ia sentiasa menggesa saya bahawa pengesahan parameter gagal Semasa proses penyahpepijatan saya, Suatu kali, saya menggunakan kaedah menghantar parameter melalui jadual Badan, dan API berfungsi secara ajaib masalah dengan penghantaran Json sebelum ini, jadi saya mencari di seluruh Internet, tetapi tiada penyelesaian [tetapi Dapatkan temui dua mata pengetahuan dan letakkannya di Akhir artikel].
Mengenai masalah dengan TP5, saya tidak mempunyai pilihan selain menyemak kod sumber, jadi saya mengikuti ralat itu sedikit demi sedikit dan akhirnya menemui masalahnya~
Ternyata TP5 menggunakan fungsi strpos untuk mencari rentetan app/json dalam nilai jenis kandungan Pengepala, yang bermaksud bahawa anda mesti menetapkan nilai jenis kandungan Pengepala kepada app/json, jika tidak TP5 tidak akan menganggap bahawa anda telah lulus ia adalah parameter Json dan tetapkan nilai kepada Request::post menjadi kosong.
Perkara di atas menyelesaikan masalah bahawa TP5 tidak boleh menerima parameter Json yang diluluskan oleh Pos klien.
Dua mata pengetahuan:
php data yang jenis kandungannya ialah "application/json" tidak boleh dikenali secara langsung, jadi tatasusunan $_POST kosong. Penyelesaian: Kami hanya perlu menggunakan $GLOBALS['HTTP_RAW_POST_DATA'] untuk mengeluarkan data asal, dan kemudian json_decode [Menggunakan kaedah ini, anda perlu menetapkan nilai always_populate_raw_post_data dalam php.ini kepada Hidup][$HTTP_RAW_POST_DATA, yang mengandungi data asal data POST. Tetapi ini bukan pembolehubah superglobal, untuk menggunakannya dalam fungsi ia mesti diisytiharkan global , atau gunakan $GLOBALS['HTTP_RAW_POST_DATA'] sebaliknya. ];
Anda boleh menggunakan file_get_contents('php://input') dan bukannya kaedah di atas untuk mendapatkan terus parameter Json yang masuk [Apabila saya membaca kod sumber TP5, saya dapati bahawa mereka juga menggunakan kaedah ini untuk mendapatkan nilai awal].
Pembelajaran yang disyorkan: "Tutorial Video thinkPHP"
Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika catatan thinkphp5 tidak mendapat nilai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!