Php 如何在ajax帖子中传递对象
我几乎已经为一件听起来很简单的事情争论了一天。我正在尝试使用AngularPostAjax传递对象。我将PHP与codeigniter框架一起使用,没有任何值通过。我用angular发送对象的方式肯定有问题,因为php没有得到任何东西。它将到达正确的位置,因为我得到一个响应错误,说“尝试获取非对象的属性,第173行”第173行是$AccessKey=$data->AccessKey 这是我的角度代码Php 如何在ajax帖子中传递对象,php,angularjs,codeigniter,Php,Angularjs,Codeigniter,我几乎已经为一件听起来很简单的事情争论了一天。我正在尝试使用AngularPostAjax传递对象。我将PHP与codeigniter框架一起使用,没有任何值通过。我用angular发送对象的方式肯定有问题,因为php没有得到任何东西。它将到达正确的位置,因为我得到一个响应错误,说“尝试获取非对象的属性,第173行”第173行是$AccessKey=$data->AccessKey 这是我的角度代码 app.controller('loginController', function($scop
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';
}
}
}
尝试此操作,使用
params
而不是数据&在params中删除'
$http({
url: 'http://localhost:8888/employees/login',
method: "POST",
params: {"AccessKey":"candoa01@gmail.com","Password":"candoa21"}
})
尝试此操作,使用
params
而不是数据&在params中删除'
$http({
url: 'http://localhost:8888/employees/login',
method: "POST",
params: {"AccessKey":"candoa01@gmail.com","Password":"candoa21"}
})
根据服务器端代码,您必须传递如下所示的数据
$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);
})
};
根据服务器端代码,您必须传递如下所示的数据
$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);
})
};
您接收数据的方式错误,因为您没有发布json格式的数据。这应该是
$AccessKey = $this->input->post('AccessKey');
$Password = $this->input->post('Password ');
或者你可以用这种方式
$data = $this->input->post();
$AccessKey = $data['AccessKey'];
$Password = $data['Password'];
您接收数据的方式错误,因为您没有发布json格式的数据。这应该是
$AccessKey = $this->input->post('AccessKey');
$Password = $this->input->post('Password ');
或者你可以用这种方式
$data = $this->input->post();
$AccessKey = $data['AccessKey'];
$Password = $data['Password'];
您正在发送字符串atm,如果要发送对象,请将其更改为:
data:{user:{“AccessKey”:candoa01@gmail.com“,“password”:“candoa21”}
您应该能够使用$this->input->post('user')检索php脚本中的数据我认为数据应该是data:data:{“AccessKey”:candoa01@gmail.com“,“Password”:“candoa21”}
为什么使用json编码来获取数据?这应该是$AccessKey=$This->input->post('AccessKey')代码>和$Password=$this->input->post('Password');您正在发送字符串atm,如果要发送对象,请将其更改为:data:{user:{“AccessKey”:candoa01@gmail.com“,“password”:“candoa21”}
您应该能够使用$this->input->post('user')检索php脚本中的数据我认为数据应该是data:data:{“AccessKey”:candoa01@gmail.com“,“Password”:“candoa21”}
为什么使用json编码来获取数据?这应该是$AccessKey=$This->input->post('AccessKey')代码>和$Password=$this->input->post('Password');非常感谢你的工作。对于将来可能遇到此问题的人。我将ajax类型从post更改为get,并使用服务器端语言进行了相同的更改。我还添加了$this input->get('AccessKey'),并对password执行了相同的操作,因为我不再检查对象,而是检查查询字符串。非常感谢ramamoorthy!u Villithan,非常感谢你的工作。对于将来可能遇到此问题的人。我将ajax类型从post更改为get,并使用服务器端语言进行了相同的更改。我还添加了$this input->get('AccessKey'),并对password执行了相同的操作,因为我不再检查对象,而是检查查询字符串。非常感谢ramamoorthy_villiYes如果你想发布数据json格式,你可以使用这种方式。是的,如果你想发布数据json格式,你可以使用这种方式。