AngularJS HTTP Post ke PHP: Memahami Nilai "Tidak Ditakrifkan"
Ramai pengguna AngularJS menghadapi masalah semasa menghantar permintaan POST ke PHP, mengakibatkan nilai "undefined" untuk parameter POST. Artikel ini menyelami punca dan menyediakan penyelesaian untuk menyelesaikan masalah ini.
Default Pengepala Jenis Kandungan
Punca isu ini terletak pada lalai "Kandungan- Jenis" pengepala yang digunakan oleh AngularJS untuk permintaan HTTP POST. Secara lalai, AngularJS menetapkan pengepala ini kepada "application/json", yang menunjukkan bahawa badan permintaan harus disiri sebagai data JSON.
Data Diekodkan Borang lwn. JSON
Walau bagaimanapun, jika kod PHP anda menjangkakan data berkod bentuk (iaitu, data dalam format "fieldname=value&fieldname=value"), ia tidak akan dapat mengisi tatasusunan $_POST dengan betul. Untuk menyelesaikan masalah ini, anda boleh sama ada menukar skrip PHP anda untuk membaca aliran input mentah sebagai JSON atau melaraskan kod AngularJS anda untuk menghantar data yang dikodkan borang.
Penyelesaian 1: Baca Input Mentah sebagai JSON dalam PHP
Penyelesaian ini melibatkan pengubahsuaian kod PHP anda untuk membaca data input mentah sebagai JSON, menyahsirikannya dan mengekstrak POST nilai secara manual. Anda boleh melakukan ini menggunakan kod berikut:
$postdata = file_get_contents("php://input"); $request = json_decode($postdata); $email = $request->email; $pass = $request->password;
Penyelesaian 2: Hantar Data Dikodkan Borang daripada AngularJS
Jika anda lebih suka menggunakan fungsi $_POST dalam PHP, anda boleh membuat rentetan pertanyaan secara manual dan menghantarnya sebagai data dalam permintaan AngularJS anda. Rentetan pertanyaan hendaklah dalam format "fieldname=value&fieldname=value," dan ia hendaklah dikodkan URL. Anda boleh menggunakan encodeURIComponent() dalam JavaScript untuk memastikan pengekodan yang betul.
Atas ialah kandungan terperinci Mengapa parameter POST HTTP AngularJS saya tidak ditentukan dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!