Dengan populariti aplikasi web, penggunaan teknologi AJAX semakin meluas. JSON (JavaScript Object Notation) ialah format data yang popular apabila berurusan dengan interaksi data hadapan dan belakang. Dalam rangka kerja ThinkPHP5, operasi JSON adalah sangat mudah Artikel ini akan memperkenalkan cara menggunakan kaedah JSON dalam ThinkPHP5.
Dalam PHP, untuk menukar tatasusunan kepada data format JSON, anda hanya perlu menggunakan fungsi json_encode.
$data = array('a' => 1, 'b' => 2, 'c' => 3); echo json_encode($data); // {"a":1,"b":2,"c":3}
Data format JSON boleh ditukar kepada tatasusunan melalui fungsi json_decode:
$json_data = '{"a":1,"b":2,"c":3}'; $data = json_decode($json_data, true); print_r($data); // Array ( [a] => 1 [b] => 2 [c] => 3 )
Dalam rangka kerja ThinkPHP5, operasi JSON adalah lebih mudah, dan rangka kerja menyediakan kelas Json, yang mudah Untuk memproses data JSON dengan cekap, kelas ini terletak di thinkresponseJson.php.
Kelas Json mewarisi daripada kelas Respons ialah kelas induk abstrak bagi kelas respons tindak balas kepada klien. Fungsi utama kelas Json adalah untuk mengembalikan data kepada klien dalam format JSON.
Kita boleh mencipta contoh Json dengan cara berikut:
use think\response\Json; $data = array('a' => 1, 'b' => 2, 'c' => 3); $json = new Json($data);
atau dengan cara berikut:
$json = json($data);
Kelas Json menyediakan berbilang kaedah untuk memproses data JSON masing-masing.
(1) kaedah data
Kaedah data digunakan untuk menetapkan data yang akan dikembalikan.
$json = new Json(); $json->data($data);
atau:
$json->data($data)->code(200)->header(['Cache-control' => 'no-cache,must-revalidate'])->send();
(2) kaedah kandungan
Kaedah kandungan digunakan untuk menetapkan jenis data yang akan dikembalikan, seperti Kandungan - jenis aplikasi/json Type.
$json = new Json(); $json->content('application/json');
(3) kaedah jsonp
Kaedah jsonp digunakan untuk menjana data JSONP Ia menerima dua parameter Parameter pertama ialah nama fungsi panggil balik, dan parameter kedua ialah nama fungsi panggil balik Data dikembalikan.
$json = new Json(); $json->jsonp('callback', $data);
(4) kaedah kod
Kaedah kod digunakan untuk menetapkan kod status respons Sebagai contoh, 200 bermakna respons berjaya, 404 bermakna sumber yang diminta melakukannya tidak wujud, dsb.
$json = new Json(); $json->code(200);
(5) kaedah pengepala
Kaedah pengepala digunakan untuk menetapkan maklumat pengepala respons.
$json = new Json(); $json->header(['Cache-control' => 'no-cache,must-revalidate']);
(6) kaedah pilihan
kaedah pilihan digunakan untuk menetapkan pilihan respons.
$json = new Json(); $json->options(['json_encode_param' => JSON_UNESCAPED_UNICODE]);
(7) kaedah hantar
Kaedah hantar digunakan untuk menghantar data respons.
$json = new Json($data); $json->send();
Berikut ialah contoh untuk mempelajari cara menggunakan kelas Json. Katakan kita memerlukan API JSON untuk mengembalikan senarai produk Setiap produk mempunyai dua atribut: ID dan nama.
Mula-mula kod bahagian hadapan:
$.ajax({ url: '/goods/list', dataType: 'jsonp', jsonp: 'callback', success: function(data) { if (data.code == 200) { $.each(data.data, function(index, item) { $('#goods-list').append('<li>' + item.id + ': ' + item.name + '</li>'); }); } else { alert('加载商品列表失败:' + data.msg); } }, error: function(jqXHR, textStatus, errorThrown) { alert('加载商品列表失败:' + textStatus); } });
Kemudian tambahkan fungsi senarai dalam pengawal Barangan:
namespace app\index\controller; use think\response\Json; class Goods { public function list() { // 模拟商品数据 $goods_list = array( array('id' => 1, 'name' => '商品1'), array('id' => 2, 'name' => '商品2'), array('id' => 3, 'name' => '商品3'), ); // 返回JSON数据 $json = json($goods_list); $jsonp_callback = input('get.callback'); if (!empty($jsonp_callback)) { $json->jsonp($jsonp_callback); } return $json; } }
Akhir sekali, tambahkan peraturan dalam penghalaan:
Route::get('/goods/list', 'index/Goods/list');
Jalankan program dan akses laluan /barang/senarai untuk melihat data JSON yang dikembalikan.
Artikel ini hanya memperkenalkan beberapa kaedah penggunaan asas kelas Json dalam rangka kerja ThinkPHP5 Terdapat lebih banyak penggunaan lanjutan yang perlu diterokai sendiri oleh pembaca. Saya harap artikel ini dapat memberikan sedikit rujukan untuk semua orang memahami operasi JSON bagi rangka kerja ThinkPHP5.
Atas ialah kandungan terperinci Mari kita bincangkan tentang cara menggunakan kaedah JSON dalam thinkphp5. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!