1

私はAngularJSが初めてです。$resource を使用して angular js から REST API を呼び出したいのですが、正しく取得できません。

これは index.html です

<html ng-app="myApp">
<head>
    <script src="./angular.min.js"></script>
     <script src="./controllers.js"></script>
     <script src="./angular-resource.js"></script>
     <script src="./services.js"></script>
</head>
<body>
    <div ng-controller="loginController">
        <h1>  try to call restapi </h1>
    </div>
</body>

これはcontroller.jsです

var myapp=angular.module('myApp', ['user']);
myapp.controller('loginController', ['$scope', 'loginUser',
function ($scope, loginUser) {

 alert(loginUser.login());
}]);

これはservice.jsです

angular.module('user', ['ngResource']).

config(function($httpProvider){
    $httpProvider.defaults.headers.common['Accept'] = "application/json";
}).factory('loginUser', function($resource){

   return $resource('http://localhost/testtext/index.php/user/login',{
   login: {method:'POST', params:{"email":"prashant@gmail.com","password":"weldone"}, isArray:false}

        });

});

実際には、コンソールでこのエラーが発生しているため、params json は適切な形式ではありません。

POST http://localhost/testtext/index.php/user/login?  email=prashant%40gmailcom&password=weldone 500 (PHP Error) angular.min.js:99
(anonymous function) angular.min.js:99
n angular.min.js:95
l angular.min.js:94
Resource.(anonymous function) angular-resource.js:469
(anonymous function) controllers.js:6
d angular.min.js:28
instantiate angular.min.js:28
(anonymous function) angular.min.js:52
(anonymous function) angular.min.js:43
m angular.min.js:6
i angular.min.js:43
e angular.min.js:39
e angular.min.js:39
e angular.min.js:39
(anonymous function) angular.min.js:38
(anonymous function) angular.min.js:16
e.$eval angular.min.js:88
e.$apply angular.min.js:88
(anonymous function) angular.min.js:16
d angular.min.js:27
c angular.min.js:16
rb angular.min.js:16
jc angular.min.js:15
(anonymous function) angular.min.js:163
a angular.min.js:117
(anonymous function) angular.min.js:23
m angular.min.js:6
c
4

1 に答える 1

0

他の人が指摘しているように、Angular は問題ないように見えますが、php サービスの正しい形式でデータを送信していない可能性があります。フォームでエンコードされたデータを期待していたサービスに対して、次のことを行う必要がありました。うまくいけば、それ(または同様のもの)がうまくいくでしょう。

     $http({
         method: 'POST',
         url: 'rest/mm/login',
         data: 'username=' + $scope.username + "&password=" + $scope.password,
         headers: {'Content-Type': 'application/x-www-form-urlencoded'}
     }).success(function (result) {
         authService.loginConfirmed(result);
     });

(明らかに、ユーザー名/パスワードは、安全などのためにエンコードされた URL である必要があります)

于 2013-09-28T11:00:33.840 に答える