Laravel7 ajaxでviewを返す方法

ajaxで表示を追加したりする場合、本当はJSON形式で受け取りVue.jsなどで描画する方が綺麗なのかもしれないけど、Viewで受け取り、追加したい要素にappendで手っ取り早く描画する方法。

■View側

<script>
$(function(){
    $('#moreBtn').on('click', function(){

        $.ajax({
            url: 'http://localhost/xxxx/public/information/more',
            type: 'get',
            data: {"page" : 2},
        })
        .done(function(data){
            $('#addArea').append(data['list']);
        })
        .fail(function(){
            alert('error');
        })

    });
});
</script>

‘moreBtn’が押されたら
$(‘#moreBtn’).on(‘click’, function(){

ajaxでgetで
type: ‘get’,

getリクエストする
url: ‘http://localhost/xxxx/public/information/more’,
※url: ‘http://localhost/xxxx/public/コントローラ名/アクション名’,

パラメータがあればセットする
data: {“page” : 2},

コントローラから受け取ったviewを表示したい要素に追加して完了
$(‘#addArea’).append(data[‘list’]);

コントローラ側

    public function more(Request $request)
    {
        $page = $request->input('page');

        $informations = viewに渡したいデータを取得

        return response()->json([
            'list' => view('admin.information.more', compact('informations'))->render()
        ]);

    }

レスポンスをJSON形式で返す
return response()->json([

返すviewを指定する。
view(‘admin.information.more’

そのviewに渡したいパラメータがあれば渡してやる。
compact(‘informations’)

ここまでは想像つきそうだけど、最後に
->render()

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です