thinkphp5开发仿百度糯米 https://coding.imooc.com/class/85.html
同步方式: (前端)form表单 -> submit自动把form中元素以键值对方式组装成一个数组,抛送给action中url(控制器)
->(页面跳转到控制器)接收数据->(可选)validate验证
->(数据库)-> curl操作,返回结果给控制器
->(控制器直接发布结果 或在控制器中写前端页面的重定向)
异步方式 : (前端)绑定js函数 -> 自己把form数据组装数组(同步是submit自动)->ajax(把组装好的数组发送到url)
->(js把数据抛送到控制器,但页面还在当前页面)接收数据 ->(可选)validate验证
->(数据库)->curl操作,返回结果给控制器
->(当前页面ajax中的回调函数)->返回给ajax回调函数,根据从控制器回调的结果,在前端当前页中实现不同操作
对比来看,同步和异步在Controller层和Model层的操作基本一致,唯一不同在于同步是页面需要跳转到不同的页面,而异步始终在当前页。
<同步-view>
<同步-validate>
<同步-model>
页面展示
$this->success()方法默认返回的之前页面($_SERVER['HTTP_REFERER'])
所以跳转回添加页(添加成功后等待3秒后又跳转回添加页)
但这一套流程比较不符常理,正常的操作(之前使用easyui)为:若ajax回调的结果成功,添加页销毁,表格(datagrid)自动刷新,并提示成功。
下面开始改写异步方式
前端从action变为post,指定id在js中绑定
ajax(layui弹出层封装好dialog类供调用)
控制器改进(1)——封装show方法(th5 common.php)
控制器改进(2)validate层保持不变
model层改进
完成后既可在当前页面报错,成功后添加页面自动销毁,父页面刷新