从JQuery发送请求到CakePHP

时间:2014-01-02 18:26:54

标签: javascript php jquery cakephp

我正在创建一个Web应用程序,它使用CakePHP作为后端,JQuery作为前端。为了与服务器通信,我想使用ajax从JQuery发出GET和Post请求。这就是我现在所拥有的:

function submit_registration(fname, lname, email, pass)
{
  var arr = { data: {User: { fname: fname, lname: lname, email: email, password: pass }}};

  $.post('http://localhost/cake2/users/add', JSON.stringify(arr), function(response){
  alert(response);
  })
}

这是在JQuery中。这是CakePHP中的添加操作:

public function add()
{   
    $this->layout = null ;

    if ($this->request->is('post'))
    {
        $data = $this->request->input('json_decode');
        $this->User->create();

        if ($this->User->save($data))
        {
            $this->set('data', "success");
            $this->render('/General/JsonMode2/');
        }
        else
        {
            $this->set('data', "failure to save");
            $this->render('/General/JsonMode2/');
        }
    }
    else
    {
        $this->set('data', "failure to post");
        $this->render('/General/JsonMode2/');
    }
}

它将JSON渲染回前端。我的问题是,当我提交请求时没有任何反应。我发出警报以确保调用submit_registration函数。任何人都可以给我一个线索作为发生的事情吗?

1 个答案:

答案 0 :(得分:2)

将脚本功能更改为:

function submit_registration(fname, lname, email, pass)
{
  var data = {User: { fname: fname, lname: lname, email: email, password: pass }};

  $.post('http://localhost/cake2/users/add', data, function(response){
  alert(response);
  })
}

并更改$ data = $ this-> request-> input('json_decode');到

$data = $this->data;

要调试响应,请使用CakeResponse,如下所示:

return new CakeResponse(array('body'=> json_encode('...message here...'),'status'=>200));