我几乎每天都在争论一些听起来很简单的事情。我试图使用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';
}
}
}
答案 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'];