数据没有从localStorage PHP发布。角

时间:2016-10-03 22:46:26

标签: javascript php angularjs

我正在尝试为体育赛事创建某种订阅。在这种情况下,我用gameId和userId创建了表。我正在尝试通过localStorage登录用户ID。 这是我的角度代码:

app.controller('customersCtrl', function($scope, $http) {
$http.get("php/contents.php")
.then(function (response) {
    $scope.games = response.data.games;
});
/*$scope.subscribe = function(something){  
   // console.log(something);
    console.log(localStorage.getItem('loggedUserInfo'));
};*/
$scope.subscribe = function (gameId,userId){
    var data = {
        userId: localStorage.getItem('loggedUserInfo'),
        gameId: gameId
    }
    //console.log(data);       
    $http.post("php/subscribe.php", data).success(function(response){
        console.log(response);
    }).error(function(error){
        console.error(error);
    });
};
});

这是我的PHP代码:

<?php 
include("../connection.php");
$data = json_decode(file_get_contents("php://input"));
$userId = $data->userId;
$gameId = $data->gameId;

$q = "INSERT INTO subscription (gameId, playerId) VALUES (:game, :user)";
$query = $db->prepare($q);
$execute = $query->execute(array(
    ":game" => $gameId,
    ":user" => $userId

));

echo json_encode($data);
?>

当我控制$ data时,我得到Object {userId:“↵1”,gameId:“2”},但是在数据库中只有gameId,userId总是= 0。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

localStorage只存储字符串。

假设您在执行JSON.stringify()时使用setItem(),则需要执行相反的操作,使用JSON.parse()将其从字符串转换为对象

尝试

var data = {
    userId: JSON.parse(localStorage.getItem('loggedUserInfo')),
    gameId: gameId
}

请注意,在传递请求之前,您还应确保密钥存在于localStorage中

或者在php中,如果你这样做:

 $userId= json_decode($data->userId);

您还应该看到正确的数据库插入,但是在发布时混合数据类型似乎不一致,以后可能会在进行维护时混淆