我在做自动加载下一页的时候,有2种选择:
第一种:通过 Ajax 获得数据,然后再使用 JS 渲染HTML,在加载某容器尾部。
由于我用的不是 Vue,也没借助任何框架,且对于Js渲染数据不太精通。如果是简单几行数据渲染,且没判断的,还好说。目前碰到的数据显示比较麻烦,还有各种判断。经过几次尝试还是放弃了。
第二种:直接PHP渲染出HTML,通过 AJAX 输出给前端,直接加载到某容器尾部。可在 blade 模板里面进行各种处理。这个也是我一直用的方法,得心应手。
可是 laravel controller 输出都是 View() 对象:
return view('user.profile', ['user' => User::findOrFail($id)]);
可是经过很多次尝试,翻阅资料,都没找到告诉我如何获取渲染后 html 的方法。
后来想起来了 Response() ,研究了下 Response() 发现,他也能渲染模板,且输出的对象里面,可以获得 Html,
具体方法:
$response = response()->view('xx.blade.php', $data); $html = $response->content(); return response()->json([ 'code' => 200, 'data' => $html, 'msg' => 'ok', ]);
这样就能把渲染后的 html 通过JSON格式,传给前端了。