cakephp2 框架下的 ajax实现

目前框架cakePHP扎实用了1年多,这里说下本人常用的ajax 套路,自己当做一个模板。

目录 {

1:前端视图

2:前端js

3:后台php

}

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);
        }
    }

猜你喜欢

转载自www.cnblogs.com/dooun/p/9182532.html