cakephp 3.0中的简单ajax形式

Aba*_*ary 6 ajax cakephp-3.0

由于JsHelper不再是cakephp 3.0所以我正在做的是使用ajax将表单数据保存到数据库中


我只有两个输入字段.
我的文件是:


  1. add.ctp
  2. js.js
  3. EmployeesController.php


add.ctp


    $this->Form->create('Employees');
        $this->Form->input('name', array('id'=>'name'));
        $this->Form->input('age', array('id'=>'age'));
        $this->Form->button('Add Info', array(
               'type'=>'button',
               'onclick'=>'infoAdd();'
        ));
    $this->Form->end();

js.js


    function infoAdd() {
        var name=$("#name").val();
        var age=$("#age").val();
        $.get('/employees/info?name='+name+"&age="+age, function(d) {
            alert(d);
        });
    }

EmployeesController.php

class EmployeesController extends AppController {
    public $components=array('RequestHandler');
    public function add() {
        $emp=$this->Employees->newEntity();
        if($this->request->is('ajax')) {
            $this->autoRender=false;
            $this->request->data['name']=$this->request->query['name'];
            $this->request->data['age']=$this->request->query['age'];
            $emp=$this->Employees->patchEntity($emp,$this->request->data);
            if($result=$this->Employees->save($emp)) {
                echo "Success: data saved";
                //echo $result->id;
            }
            else {
                echo "Error: some error";
                //print_r($emp);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


注意:我的模型只有not empty两个字段的规则

所有我正在做的工作正常,但我不认为我正确地或正确地做它.
请帮助我,我失踪了什么,我不需要做什么.

Isa*_*kew 6

取走autoRender行并序列化您想要返回的数据:

public function add() {

    $data = [];

    $emp=$this->Employees->newEntity();
    if($this->request->is('ajax')) {
        $this->request->data['name']=$this->request->query['name'];
        $this->request->data['age']=$this->request->query['age'];
        $emp=$this->Employees->patchEntity($emp,$this->request->data);
        if($result=$this->Employees->save($emp)) {
            $data['response'] = "Success: data saved";
            //echo $result->id;
        }
        else {
            $data['response'] = "Error: some error";
            //print_r($emp);
        }
    }

    $this->set(compact('data'));
    $this->set('_serialize', 'data');
}
Run Code Online (Sandbox Code Playgroud)

serialize函数告诉Cake它不希望函数有一个视图,因此不需要autoRender(http://book.cakephp.org/3.0/en/views/json-and-xml-views.html).