将数据从Angularjs发送到php时出错

时间:2015-04-14 08:55:42

标签: javascript php database angularjs

我用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);

  ?>

2 个答案:

答案 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'];