我用angularjs和配方的php创建和移动应用程序。我试图使用$ stateParams of angular使用http POST方法将来自url的配方中的id发送到服务器。 Id发送或收到错误,因为当我检查我的localhost中的数据时显示一个空对象。谁知道我犯了什么错误?
Angularjs:
- 视图的控制器:
.controller('RecipeDetailCtrl', function($scope, $stateParams, Recipes) {
Recipes.getRecipe($stateParams.recipeId).success(function(data){
$scope.recipe = data;
console.log($scope.recipe);
})
})
- services.js中的功能:
getRecipe : function(Id) {
return $http({
url: 'http://localhost/degusto/detail.php',
method: 'POST',
data: {'Id': Id},
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
})
}
PHP:
require_once("connect.php");
$user_id = $_POST['Id'];
echo "user_id:"+$user_id;
$result = $conn->query("SELECT * FROM Recipes WHERE Id ='".$var."'");
$outp = "[";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
if ($outp != "[") {$outp .= ",";}
$outp .= '{"Id":"' . $rs["Id"] . '",';
$outp .= '"Name":"' . $rs["Name"] . '",';
$outp .= '"Date":"' . $rs["Date"] . '",';
$outp .= '"Descrip":"' . $rs["Descrip"] . '",';
$outp .= '"Image":"'. $rs["Image"] . '"}';
}
$outp .="]";
$conn->close();
echo($outp);
?>
答案 0 :(得分:1)
您将$ user_id设置为id,但在select语句中使用$ var
$result = $conn->query("SELECT * FROM Recipes WHERE Id ='".$var."'");
应该是
$result = $conn->query("SELECT * FROM Recipes WHERE Id ='".$user_id."'");
还要注意SQL注入see here
答案 1 :(得分:0)
是否正在使用PHP?我以前经历过你要发送的对象必须在容器对象中。
你可以试试data: $.param({'data' : {'Id': Id}}),
然后在php $data = $_POST['data'];