cakephp2 框架下的 ajax实现
2018-06-14 12:50 Dooun 阅读(418) 评论(0) 收藏 举报目前框架cakePHP扎实用了1年多,这里说下本人常用的ajax 套路,自己当做一个模板。
目录 {
}
1 前端视图
echo $this->Form->create(false, array( 'url' => array( 'controller' => '表单控制器', 'action' => '表单action' ), 'type' => 'post', 'id'=>'表单id' )); echo $this->Form->input('field1') ; echo $this->Form->input('field2') ; echo $this->Form->input('field3') ; echo $this->Form->input('field4') ; echo $this->Form->end("发送");
2. 前端js
$("#表单id").submit(function(){
// 获取当前表单里的数据
var data = $(this).serialize();
// 获取表单的提交地址
var action = $(this).attr("action");
$.ajax({
data: data,
url: action,
type: "post",
cache: false,
dataType: "json",
beforeSend: function(){
// 通信开始前,弹出loading图标等操作
},
success: function (response) {
// console.log(response);
if (response.processResult === true) {
console.log("操作成功");
// 返回过来的数据
console.log(response.returnData);
}
},
error: function (e) {
console.log(e.status);
if (e.status === 403) {
console.log("被拒绝访问");
} else if (e.status >= 500) {
console.log("系统出错了");
} else if (e.status === 404) {
console.log("找不到地址");
}
},
complete: function () {
// 当通信完成后,删除loading图标 等操作
}
});
// 阻止表单默认的提交行为
return false;
});
3. 后台PHP
public function ajaxAction() { $this->log(__METHOD__ . "()开始", "info"); // =========================== 0 设置类型 =============================== // 取消自动渲染 $this->autoRender = FALSE; // 判断是不是ajax访问 if (!$this->request->is('ajax')) { // throw new BadRequestException (); } // 修改文档类型为json $this->response->type('json'); // =========================== 1 参数准备=============================== // 获取请求数据 $data = $his->request->data; // 获取需要处理的数据 $data['field1'] = $data['field1']; $data['field2'] = $data['field2']; $data['field3'] = $data['field3']; $data['field4'] = $data['field4']; // =========================== 2 执行业务操作=========================== // 保存数据 $queryResult = $this->模型->save($data); // =========================== 3 返回数据(ajax)=========================== // 判断处理结果 if ($queryResult) { $returnData = [ 'processResult'=>true, 'message'=>"处理成功", 'returnData'=> $returnData ]; $this->log(__METHOD__ . "()结束", "info"); return json_encode($result); } else { $returnData = [ 'processResult'=>false, 'message'=>"出什么错了" ]; $this->log(__METHOD__ . "()非正常结束", "info"); return json_encode($returnData); } }
浙公网安备 33010602011771号