大家好我有一些问题 在我的控制器中我做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}]”所以也许其他一些解决方案?
答案 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();
?>
(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;
在Google Chrome控制台的网络标签中,我有这个json响应:
答案 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');} });