你好我有这个angularjs http.post()请求修改php框架。
'use strict';
soup.factory('loginService',function($http){
return {
login:function(user){
console.log(user);
var $promise = $http.post('api/vendor/slim/slim',user );
return $promise;
};
});
当我调试$_POST
时,它总是返回一个空数组,
但是当我使用json_decode(file_get_contents('php://input'))
时,slim php会返回错误。
这是处理请求的php函数。
function login(){
$sql = "SELECT * FROM users ORDER by id";
try {
$db = getConnection();
$stmt = $db->query($sql);
$users = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
//print_r($users);
$users = json_encode($users);
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
var_dump($_POST);
$test = json_decode(file_get_contents('php://input'));
//do something with the post data
}
我该如何解决这个问题?
答案 0 :(得分:1)
$http api说:
params - {Object。} - 字符串或对象的映射 将在url之后转到?key1 = value1& key2 = value2。 如果该值不是字符串,则为JSONified。
尝试以字符串形式发送数据,如下所示:
var $promise = $http({
url: 'api/vendor/slim/slim', method: 'POST',
data: 'user=' + usr + '&password=' + pwd,
headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
});
请勿忘记添加Content-Type
标题。