angularjs http.post()没有收到回复

时间:2017-04-23 15:42:08

标签: javascript php html angularjs

    <!DOCTYPE html>
<html>
<head>
    <title>login</title>
    <script src="angular.min.js"></script>
    <style type="text/css">
        #a{
            display: none;
        }
    </style>
</head>
<body>


<div ng-app="myapp" ng-controller="myctrl">

<p>Input something in the input box:</p>
<input type="text" ng-model="username" placeholder="username"><br>
<input type="password" name="password" ng-model="password" placeholder="password"><br>
<button ng-click="login()">login</button>
<p id="a">
{{ resmsg }}<br>
<br></p>


</div>
<script type="text/javascript">
    var app= angular.module('myapp',[]);
    app.controller('myctrl', function ($scope , $http, $templateCache) {
        $scope.resmsg ="";

        $scope.login = function()
        {
            $http({
            method: 'POST', 
            url:'http://localhost/ng/myphp.php',
             data:{username : $scope.username, password : $scope.password},
            headers: {'Content-Type': 'application/x-www-form-urlencoded'},  
            cache: $templateCache
        }).success(function(response) {
            $scope.resmsg = response;
        }).error(function(response){

        })
            $scope.resmsg = response;
        }


    })
</script>
</body>

</html>`


myphp.php

<? php

 $postdata = file_get_contents("php://input");
    $request = json_decode($postdata);
    $username = $request->username;
    $password = $request->password;
    if($username == "admin" && $password== "admin"){
        echo "1";
    }
    else {
        echo "0";
    }

?>

enter image description here

  

我试图使用angularjs创建一个简单的登录表单,php我有   尝试使用http.post()方法将我的表单数据发送到php文件   在角度js但没有得到任何东西作为回应和得到   errormsg(截图),错误就像没有函数一样   成功   帮助我摆脱这个错误

1 个答案:

答案 0 :(得分:2)

您使用的角度是什么版本? $http.success在角度1.5中被弃用,在角度1.6中被删除。您应该使用$http.then,如下所示:

$http({
    method: 'POST', 
    url:'http://localhost/ng/myphp.php',
    data:{username : $scope.username, password : $scope.password},
    cache: $templateCache
}).then(function(response) {
    $scope.resmsg = response.data;
}).catch(function(response){
    var err = response.data;
    // process error
})

接下来,您在打开php标记时出错,还有一个额外的空格(使用<?php代替<? php

此外,您的服务器似乎没有使用PHP处理文件,它只返回PHP代码本身。尝试直接访问脚本,看它是否返回代码或执行它。如果它将代码作为字符串返回,则Web服务器配置中会出错。