Saya punya Postman (yang tidak terbuka di Chrome) dan saya mencoba melakukan permintaan POST menggunakan raw json.
Di tab Body saya telah memilih "raw" dan "JSON (application / json)" dengan body ini:
{
"foo": "bar"
}
Untuk tajuk saya punya 1, Content-Type: application/json
Di sisi PHP yang saya lakukan print_r($_POST);
untuk saat ini, dan saya mendapatkan array kosong.
Jika saya menggunakan jQuery dan melakukan:
$.ajax({
"type": "POST",
"url": "/rest/index.php",
"data": {
"foo": "bar"
}
}).done(function (d) {
console.log(d);
});
Saya mendapatkan seperti yang diharapkan:
Array
(
[foo] => bar
)
Jadi mengapa tidak bekerja dengan Postman?
Tangkapan layar tukang pos:
dan tajuk:
array(1) {["foo"]=> string(3) "bar"}
dengan jQuery dan masih kosong dengan Postman:array(0) {}
fields
danfoo
tidak akan cocok sehingga tidak akan berfungsi, saya tidak yakin apakah itu salah ketik tetapi pastikan mereka cocokJawaban:
Tidak seperti
jQuery
untuk membaca mentah,JSON
Anda harus mendekodekannya dalam PHP.php://input
adalah aliran hanya baca yang memungkinkan Anda membaca data mentah dari isi permintaan.$_POST
adalah variabel bentuk, Anda harus beralih keform
tombol radiopostman
kemudian menggunakan:Untuk memposting mentah
json
denganjquery
:sumber
Cukup centang opsi JSON dari drop-down di sebelah biner; saat Anda mengklik mentah. Ini harus dilakukan
sumber
jawaban meda sepenuhnya sah, tetapi ketika saya menyalin kode saya mendapat kesalahan!
Di suatu tempat di
"php://input"
sana ada karakter yang tidak valid (mungkin salah satu tanda kutip?).Ketika saya mengetik
"php://input"
kode secara manual, itu berhasil. Butuh beberapa saat untuk mencari tahu!sumber
200c 200b
(karakter lebar nol) antara "n" dan "p" di "input". Tidak yakin bagaimana dia bisa berakhir dengan itu, tapi sekarang sudah diperbaiki.Saya menghadapi masalah yang sama, kode berikut berfungsi untuk saya:
sumber
Instal aplikasi asli Postman, ekstensi Chrome sudah tidak digunakan lagi. (Punyaku terbuka di jendela sendiri tetapi masih berjalan sebagai aplikasi Chrome)
sumber