Saya selalu berusaha menghindari penggunaan sebagian besar properti protokol HTTP demi takut akan hal yang tidak diketahui.
Namun, saya berkata pada diri sendiri bahwa saya akan menghadapi ketakutan hari ini dan mulai menggunakan header dengan sengaja. Saya telah mencoba mengirim json
data ke browser dan langsung menggunakannya. Misalnya, jika saya memiliki fungsi penangan Ajax pada status siap 4 yang terlihat seperti ini:
function ajaxHandler(response){
alert(response.text);
}
Dan saya telah mengatur header tipe konten dalam kode PHP saya:
header('Content-Type: application/json');
echo json_encode(array('text' => 'omrele'));
Mengapa saya tidak bisa langsung mengakses properti dari fungsi handler, ketika browser dengan jelas diberitahu bahwa data yang masuk adalah application/json
?
javascript
php
json
http
php_nub_qq
sumber
sumber
text
sebagai variabel javascript di handler dan bukan respons? Itu akan menjadi fungsi yang sangat aneh. The json_encode juga membuat 1 objek dari array PHP Anda. Jadi, ketika Anda memasukkan ini ke dalam javascript, Anda harus ditugaskan ke variabel.JSON.parse()
. Anda bisa mengambil beberapa tindakan berbeda, atau memaksakan kesalahan jika tipe konten yang salah muncul.response.text
masih berupa string.Jawaban:
The
Content-Type
header hanya digunakan sebagai informasi untuk aplikasi Anda. Peramban tidak peduli apa itu. Browser hanya mengembalikan Anda data dari panggilan AJAX. Jika Anda ingin menguraikannya sebagai JSON, Anda harus melakukannya sendiri.Header ada di sana sehingga aplikasi Anda dapat mendeteksi data apa yang dikembalikan dan bagaimana penanganannya. Anda perlu melihat header, dan jika itu
application/json
parsing sebagai JSON.Ini sebenarnya cara kerja jQuery. Jika Anda tidak memberi tahu apa yang harus dilakukan dengan hasilnya, ia menggunakan
Content-Type
untuk mendeteksi apa yang harus dilakukan dengan hasilnya.sumber
header('Content-Type: application/json');
dan memaksa unduhanContent-Disposition: attachment; filename=myfile.json
saat itu, Anda akan berakhir denganmyfile.json.html
. Dengan menggunakan json header ini, Anda akan mendapatkannyamyfile.json
..html
ke file, karena itu adalah defaultnya.Content-Type: application/json
hanya header konten. Header konten hanyalah informasi tentang jenis data yang dikembalikan, ex :: JSON, gambar (png, jpg, dll.), Html.Perlu diingat, bahwa JSON dalam JavaScript adalah array atau objek. Jika Anda ingin melihat semua data, gunakan console.log alih-alih lansiran:
Jika Anda ingin mengingatkan konten JSON asli sebagai string, tambahkan tanda kutip tunggal ('):
Jangan gunakan tanda kutip ganda. Ini akan membingungkan JavaScript, karena JSON menggunakan tanda kutip ganda pada setiap nilai dan kunci:
sumber
echo "'" . json_encode(array('text' => 'it\'s wrong')) . "'";
akan menghasilkan output ini rusak:'{"text":"it's wrong"}'
. Gunakan ini sebagai gantinya:json_encode(json_encode(array('text' => 'it\'s good')))
. Hasil akan lolos dengan benar:"{\"text\":\"it's wrong\"}"
Kode di bawah ini membantu saya mengembalikan objek JSON untuk JavaScript di ujung depan
Kode templat saya
template_file.json
Kode yang didukung python
File url.py
kode jQuery untuk ujung depan
sumber