Angular HTTP POST ke PHP: Menangani Nilai POST Tidak Ditakrifkan
Dalam AngularJS, melaksanakan permintaan HTTP POST ke titik akhir PHP kadangkala boleh mengakibatkan tidak ditentukan Nilai POST pada bahagian pelayan. Ini boleh berlaku apabila terdapat ketidakpadanan antara format data yang dijangkakan dan data sebenar yang dihantar oleh aplikasi Sudut.
Untuk menyelesaikan isu ini, adalah penting untuk memastikan bahawa pengepala Jenis Kandungan ditetapkan dengan sewajarnya. Secara lalai, AngularJS menetapkan pengepala ini kepada "aplikasi/json". Walau bagaimanapun, jika anda menghantar data yang dikodkan borang, ini perlu ditindih.
Dalam kod yang disediakan, baris berikut menetapkan pengepala Jenis Kandungan kepada "application/x-www-form-urlencoded; charset=UTF-8":
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
Walau bagaimanapun, ini memerlukan pengubahsuaian data yang dihantar agar sepadan dengan format yang dikodkan borang. Daripada menghantar data sebagai objek, ia perlu ditukar kepada rentetan pertanyaan. Ini boleh dilakukan dengan menggunakan jQuery.serialize() atau membina rentetan pertanyaan secara manual dengan encodeURIComponent().
Sebagai alternatif, jika anda lebih suka menggunakan fungsi $_POST PHP, anda boleh mengekalkan tetapan pengepala lalai dan mengubah suai Kod PHP untuk membaca input mentah daripada badan permintaan dan menyahkod JSON. Ini boleh dicapai dengan kod berikut:
$postdata = file_get_contents("php://input"); $request = json_decode($postdata); $email = $request->email; $pass = $request->password;
Dengan menjajarkan format data dan tetapan pengepala, anda boleh memastikan bahawa nilai POST diterima dengan betul di sebelah PHP.
Atas ialah kandungan terperinci Mengapakah nilai Angular HTTP POST saya tidak ditentukan dalam PHP, dan bagaimanakah saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!