PHP Laravel JSONの送信と受信のサンプル

LaravelのJSONの送信と受信のサンプルです。
jQueryのajaxで通信します。

確認環境
・Laravel 5.7
・PHP 7.2.8
・XAMPP 7.2.8
・Windows 10

目次

環境

このサンプルでは、以下のファイルを使用します。

  • web.php
  • index.blade.php
  • MainController.php

最初の画面の表示は以下のURLを入力します。
http://localhost/testlaravel1/public/test1

 

web.phpのファイル

web.phpです。(/routes/web.php)

<?php

Route::get('/test1',function () {
    return view('index');
});
Route::post('/test1','MainController@write1');

3,6行目は、getとpostで別にしています。

 

JSONを送受信するファイル

JSONを送受信するファイルです。(/resources/views/index.blade.php)

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>submit</title>
</head>
<body >
<p id="p1"></p>
<p id="p2"></p>
<p id="p3"></p>
</body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(function() {
	$("#button1").click(function() {
	var json1 = {
			  "bangou": "1",
			  "name": "鈴木"
			};
    $.ajaxSetup({
        headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
    });
	$.ajax({	
		url:"/testlaravel1/public/test1",
		type:"post",
		contentType: "application/json",
		data:JSON.stringify(json1),
		dataType:"json",
		}).done(function(data1,textStatus,jqXHR) {
			$("#p1").text(jqXHR.status); //例:200
			console.log(data1.code); //1
			console.log(data1.name); //eigyou
			$("#p2").text(JSON.stringify(data1));
		}).fail(function(jqXHR, textStatus, errorThrown){
			$("#p1").text("err:"+jqXHR.status); //例:404
			$("#p2").text(textStatus); //例:error
			$("#p3").text(errorThrown); //例:NOT FOUND
		}).always(function(){
		});
	});
});
</script>
<input type="button" value="ajaxで送信" id="button1">
</html>

5,21-23行目は、CSRF対策で記述が必要です。
参考:https://laravel.com/docs/5.7/csrf#csrf-x-csrf-token

17-20行目は、送信するJSONです。

29行目のdataTypeは、サーバから返されるデータの種類を指定します。
ただし、"json"を指定すると、JavaScriptオブジェクトを返す仕様になっています。
jQuery公式サイトのdataType参照。「"json": Evaluates the response as JSON and returns a JavaScript object. 」http://api.jquery.com/jQuery.ajax/

34行目は、stringifyメソッドでJavaScriptオブジェクトをJSONに変換しています。

 

コントローラのファイル

コントローラのファイルです。(/app/Http/Controllers/MainController.php)

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
//use Request;

class MainController extends Controller
{
    public function write1(Request $request)
    {        
        $json1 = $request->input('bangou');
        //echo 'a: '.$json1;
        $json2 = $request->input('name');
        //echo 'b: '.$json2;
        
//         $data1 = ['code' => '001', 'name' => 'eigyou'];
//         return $data1;

        return response()->json([
            'code' => '1',
            'name' => 'eigyou'
         ]);
    }
}

12,14行目は、JSONのキーを指定して値を取得しています。
17,18行目または20-23行目は、レスポンスとしてJSONを返します。

https://laravel.com/docs/5.7/requests#retrieving-input
https://laravel.com/docs/5.7/responses#json-responses

関連の記事

PHP LaravelのインストールとHello Worldを表示する手順(Windows10)
PHP Laravel フォームの値を別画面に渡すサンプル
PHP LaravelのMySQLに接続してselectするサンプル

△上に戻る