如何从angularjs

时间:2015-10-18 18:46:11

标签: php json angularjs

大家好我有一些问题 在我的控制器中我做http发布到服务器和运行服务器一些文件与PHP服务器端语言,并检查我是否用户在mydb注册 这是我的代码:

 $scope.sendPost = function()
 {
    var login = 
        'mylogin='+ JSON.stringify({
            email: $scope.email,
            pass:  $scope.pass
        })

       $http({

          method : 'POST',
                    url : 'http://igortestk.netai.net/login.php',
                    data: login,
                   Content-Type:'text/plain', 
                    headers : {'Content-Type': 'application/x-www-form-urlencoded'}  
                  }).success(function(data){
                    console.log(data);



                    console.log(resultlogin);
                        console.log(json);



                    }).error(function(error){
                    console.log(error);
               })
从服务器端我回来了一些登录状态的json_encode 所以我的问题是我如何从服务器响应中获取json值 这是我的服务器响应:

{"statuslogin":1}]

编辑:这是我在php中的服务器端代码;

$query="select * from `User` where Email='$email' and Pass='$pass'";

$result=mysql_query($query ,$con);
if(mysql_num_rows($result)==1){

    $reponse['statuslogin']=1;
}
else{
    $reponse['statuslogin']=0;
}

$output=json_encode($reponse);

print $output;

EDIT2:

好吧它不起作用因为响应的数据是一个字符串和数据[0]我得到“[”这个括号:data:“[{”statuslogin“:1}]”所以也许其他一些解决方案?

3 个答案:

答案 0 :(得分:2)

您可以使用以下内容获取值:

console.log(data.statuslogin);

如果是一个阵列:

console.log(data[0].statuslogin);
$http({
    method: "POST",
    url: "http://igortestk.netai.net/login.php",
    data: login,
    headers: {
        "Content-Type": "application/x-www-form-urlencoded"
    }
}).success(function (data) {

    console.log(data[0].statuslogin); // In the console will print: 1

    // If you need to show a message according the result, you can do this:

    $scope.message = (data[0].statuslogin === 1) ? "Login success" : "Login error, please check";

}).error(function (error) {
    console.log(error);
});

但是,根据AngularJS文档,不推荐使用success方法:

  

$ http遗留承诺方法成功与错误   弃用。请改用标准方法。

https://docs.angularjs.org/api/ng/service/$http

然后,您可以使用带有快捷方式的标准表单,使用then()。像这样:

$http.post("http://igortestk.netai.net/login.php", data, { headers: { "Content-Type": "application/x-www-form-urlencoded" }}).then(function(response)
{
    console.log(response.data[0].statuslogin); // In the console will print: 1
}, function(response)
{
    console.log(response);
});

<强>演示

PHP文件:loginajax.php

<?php
header("Access-Control-Allow-origin: *");
header("Content-Type: application/json");
header("Cache-Control: no-cache");

$reponse['statuslogin']=1;

$output=json_encode($reponse);

echo $output;
flush();
?>

&#13;
&#13;
(function() {
  var app = angular.module("myApp", []);

  app.controller("Controller", ["$scope", "$http",
    function($scope, $http) {
      $scope.email = "email@server.com";
      $scope.pass = "123456";

      var login =
        'mylogin=' + JSON.stringify({
          email: $scope.email,
          pass: $scope.pass
        });


      $http({
        method: "POST",
        url: "http://dfjb.webcindario.com/loginajax.php",
        data: login,
        headers: {
          "Content-Type": "application/x-www-form-urlencoded"
        }
      }).success(function(data) {

        console.log(data.statuslogin); // In the console will print: 1

        // If you need to show a message according the result, you can do this:

        //$scope.message = (data[0].statuslogin === 1) ? "Login success" : "Login error, please check";

      }).error(function(error) {
        console.log(error);
      });
    }
  ]);
})();
&#13;
<html data-ng-app="myApp">

<head>
  <title></title>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

</head>

<body data-ng-controller="Controller">
</body>

</html>
&#13;
&#13;
&#13;

在Google Chrome控制台的网络标签中,我有这个json响应:

enter image description here

答案 1 :(得分:1)

访问 JSON 数据服务的更好方法是使用 ngResource ,可以在AngularJs中使用Restful API。

.factory('UserService', function ($resource) {
    return $resource('http://jsonplaceholder.typicode.com/users/:user',{user: "@user"});
});

执行资源只需执行:

$scope.users = UserService.query();

资源对象具有以下方法:

{ 'get':    {method:'GET'},
  'save':   {method:'POST'},
  'query':  {method:'GET', isArray:true},
  'remove': {method:'DELETE'},
  'delete': {method:'DELETE'} };

获取特定用户:

$scope.oneUser = UserService.get({user: 1});

可以在此处找到更多信息:https://docs.angularjs.org/api/ngResource/service/$resource

答案 2 :(得分:0)

也许这会对你有所帮助

$http('http://igortestk.netai.net/login.php').post(data).then(function(data){ if(data.statuslogin === 1){alert('welcome');} });