如何传递ajax帖子中的对象

时间:2015-06-09 15:15:21

标签: php angularjs codeigniter

我几乎每天都在争论一些听起来很简单的事情。我试图使用angular post ajax传递一个对象。我使用PHP与codeigniter框架,我没有得到任何值传递。因为php没有得到任何东西,所以我以角度发送对象的方式有问题。它到了正确的地方,因为我得到了一个回复错误说"试图获得非对象的属性,第173行和#34;第173行是$ AccessKey = $ data-> AccessKey;

这是我的角度代码

app.controller('loginController', function($scope, $http){

//$scope.formData = {};

$scope.processForm = function(){
    $http({
        method  : 'POST',
        url     : 'http://localhost:8888/employees/login',
        data    : '{"AccessKey":"candoa01@gmail.com","Password":"candoa21"}'
    })
        .success(function(data){
            console.log(data);
        })
};



});
这是我的PHP。我想在这里也许我没有使用正确的对象名来检索值。

public function login()
{
    $data = $this->input->post('data');

    //$data = '{"AccessKey":"candoa01@gmail.com","Password":"candoa21"}';
    $data =  json_decode($data);

    $AccessKey = $data->AccessKey;
    $Password = $data->Password;

    $sql = "SELECT *
            FROM Employees
            WHERE Employees.AccessKey = ?
            AND Employees.Password = ?";

    $query = $this->db->query($sql, array($AccessKey, $Password));

    if($query->num_rows() > 0)
    {
        $query = json_encode($query->result());
        return $this->output
            ->set_content_type('application/json')
            ->set_output($query);
    }
    else
    {
        return 'Invalid AccessKey Or Password';
    }
}

}

3 个答案:

答案 0 :(得分:3)

试试这个,使用params代替数据&删除参数中的'

 $http({
        url: 'http://localhost:8888/employees/login', 
        method: "POST",
        params: {"AccessKey":"candoa01@gmail.com","Password":"candoa21"}
     })

答案 1 :(得分:1)

根据您的服务器端代码,您必须传递数据,如下所示。

$scope.processForm = function(){
    $http({
        method  : 'POST',
        url     : 'http://localhost:8888/employees/login',
        data    : { 
          data: JSON.stringify({  
             AccessKey: "candoa01@gmail.com",
             Password:"candoa21"
           })
        }
    })
    .success(function(data){
       console.log(data);
    })
};

答案 2 :(得分:0)

您收到的数据方式错误,因为您没有发布数据json格式。这应该是

$AccessKey = $this->input->post('AccessKey');
$Password = $this->input->post('Password ');

或者你可以这样使用

$data = $this->input->post();
$AccessKey = $data['AccessKey'];
$Password = $data['Password'];