- 1 认识 zentaoPHP 框架
- 2 入口文件
- 3 配置管理
- 4 模块管理
- 4.1 控制器(control)
- 4.2 业务逻辑(model)
- 4.2.1 定义 model
- 4.2.2 跨模块调用
- 4.2.3 获取模块名
- 4.2.4 删除记录
- 4.2.5 数据处理对象 dao
- 4.3 模版视图(view)
- 4.4 从 hello world 开始
- 4.5 模块的配置
- 4.6 模块的语言
- 4.7 模块的 CSS 和 JS 管理
- 5 类库
- 6 扩展机制
- 6.1 扩展机制简介
- 6.2 新增独立模块
- 6.3 对控制层(control)扩展
- 6.4 对模型层(model)扩展
- 6.5 对视图层(view)扩展
- 6.6 对样式表和js进行扩展
- 6.7 对语言配置进行扩展
响应 Ajax 请求
- 2021-12-08 15:12:02
- admin
- 1742
- 最后编辑:admin 于 2022-11-23 10:53:38
control 中内置了一个 send() 方法,通常用于 Ajax 请求中,输出 data 数据。
该方法的参数 $data 通常是一个关联数组,对于 Ajax 请求,send 方法会将数组转化为 Json 数据格式输出。
对于非 Ajax 请求,也可以使用 send 方法。通过设置 result 、message、locate 来返回响应数据。
注:result 取值为 success 或 fail
以一个简单的用户登录验证为例:
control 中,验证用户登录时输入的账号密码:
if (!empty($_POST)) { $account = trim($this->post->account); $password = $this->post->password; $user = $this->user->login($account, $password); if(!$user) $this->send(array('result'=>'fail', 'message' => $this->lang->user->loginFailed)); $this->send(array('result'=>'success', 'locate' => $this->createLink($this->config->default->module))); }
视图页面中对应的 Ajax 请求:
$("submit").on("click", function(event) { $.ajax( { contentType: 'application/x-www-form-urlencoded', type:"POST", url:"createLink("shop","index")", data:"username=" + $("#username").val() +"&password=" + $("#password").val(), dataType:"json", success:function(data) { if(data.result == "success") return location=data.locate; if(data.result == "fail") return alert(data.message); }, }) });
具体可参考 send 方法的声明代码:
/** * 直接输出data数据,通常用于ajax请求中。 * Send data directly, for ajax requests. * * @param misc $data * @param string $type * @access public * @return void */ public function send($data, $type = 'json') { if($type != 'json') die(); $data = (array) $data; if(helper::isAjaxRequest() or $this->viewType == 'json') print(json_encode($data)) and die(helper::removeUTF8Bom(ob_get_clean())); /** * 响应非ajax的请求。 * Response request not ajax. */ if(isset($data['result']) and $data['result'] == 'success') { if(!empty($data['message'])) echo js::alert($data['message']); $locate = isset($data['locate']) ? $data['locate'] : (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''); if(!empty($locate)) die(js::locate($locate)); die(isset($data['message']) ? $data['message'] : 'success'); } if(isset($data['result']) and $data['result'] == 'fail') { if(!empty($data['message'])) { $message = json_decode(json_encode((array)$data['message'])); foreach((array)$message as $item => $errors) $message->$item = implode(',', $errors); echo js::alert(strip_tags(implode(" ", (array) $message))); die(js::locate('back')); } die('fail'); } }