Web アプリケーションの人気に伴い、AJAX テクノロジの使用はますます普及しています。 JSON (JavaScript Object Notation) は、フロントエンドとバックエンドのデータ対話を処理する際によく使用されるデータ形式です。 ThinkPHP5 フレームワークでは、JSON の操作は非常に簡単ですが、この記事では、ThinkPHP5 での JSON メソッドの使用方法を紹介します。
PHP で配列を JSON 形式のデータに変換するには、 json_encode 関数を使用するだけです。
$data = array('a' => 1, 'b' => 2, 'c' => 3); echo json_encode($data); // {"a":1,"b":2,"c":3}
json_decode 関数を使用して、JSON 形式のデータを配列に変換できます:
$json_data = '{"a":1,"b":2,"c":3}'; $data = json_decode($json_data, true); print_r($data); // Array ( [a] => 1 [b] => 2 [c] => 3 )
ThinkPHP5 フレームワークでは、JSON 操作がより簡単になり、フレームワークは簡単に処理できる Json クラスを提供します。 JSON データ。このクラスは think\response\Json.php にあります。
Json クラスは、Response クラスから継承します。Response クラスは、応答クラスの抽象親クラスです。その主な機能は、クライアントへの返答。 Json クラスの主な機能は、データを JSON 形式でクライアントに返すことです。
Json インスタンスは次の方法で作成できます:
use think\response\Json; $data = array('a' => 1, 'b' => 2, 'c' => 3); $json = new Json($data);
または次の方法で作成できます:
$json = json($data);
Json クラスには JSON データを処理するためのメソッドが複数用意されていますので、以下でそれぞれ紹介していきます。
(1)dataメソッド
dataメソッドは、返却するデータを設定するために使用します。
$json = new Json(); $json->data($data);
Or:
$json->data($data)->code(200)->header(['Cache-control' => 'no-cache,must-revalidate'])->send();
(2) content メソッド
content メソッドは、返されるデータのタイプ (Content-Type タイプなど) を設定するために使用されます。アプリケーション/json。
$json = new Json(); $json->content('application/json');
(3) jsonp メソッド
jsonp メソッドは、JSONP データの生成に使用されます。2 つのパラメータを受け入れます。最初のパラメータはコールバック関数の名前で、2 番目のパラメータは値です返されるデータ。
$json = new Json(); $json->jsonp('callback', $data);
(4) code メソッド
code メソッドは、応答のステータス コードを設定するために使用されます。たとえば、200 は応答が成功したことを意味し、404 は要求されたリソースが存在しないことを意味します。 、など。
$json = new Json(); $json->code(200);
(5) headerメソッド
headerメソッドは、レスポンスヘッダ情報を設定するメソッドです。
$json = new Json(); $json->header(['Cache-control' => 'no-cache,must-revalidate']);
(6) options メソッド
options メソッドは、応答オプションを設定するために使用されます。
$json = new Json(); $json->options(['json_encode_param' => JSON_UNESCAPED_UNICODE]);
(7) send メソッド
send メソッドは、応答データを送信するために使用されます。
$json = new Json($data); $json->send();
例を通して Json クラスの使用方法を学びましょう。製品のリストを返すために JSON API が必要な場合、各製品には ID と名前という 2 つの属性があります。
最初はフロントエンド コードです:
$.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); } });
次に、コントローラーにリスト関数を追加しますグッズ:
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; } }
最後に、ルーティングにルールを追加します:
Route::get('/goods/list', 'index/Goods/list');
プログラムを実行し、パス /goods/list にアクセスして、返された JSON データを確認します。
この記事では、ThinkPHP5 フレームワークの Json クラスの基本的な使用法をいくつか紹介するだけであり、読者が自分で調べる必要があるより高度な使用法もあります。この記事が、ThinkPHP5 フレームワークの JSON 操作を理解するための参考になれば幸いです。
以上がthinkphp5 で JSON メソッドを使用する方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。