2014-06-12 4 views
0

저는 Angular에서 매우 새롭고, 내가 검증 한 간단한 "Rest World"웹 서비스에 간단한 "Hello World"webservice 호출을 시도하면서 "Hello World"를 반환합니다.

나는이 방법에 3 개의 경고를 가지고 있습니다. "In 메서드"경고가 표시되고 다른 경고도 표시되지 않습니다. 나는 바이올린을 부착했고 웹 서비스 요청은 결코 만들어지지 않았습니다. 나는 내가 생각할 수있는 기본적인 것을 내려 놓아야 만한다. 내가 무엇을 놓치고 있는지에 대한 아이디어가 있는가?

피들러 (Fiddler)는 웹 서비스 호출이 성공적이며 예상 한 웹 서비스에서 결과를 볼 수 있지만 Chrome 개발자 도구를 사용하면 서비스 호출이 Angular 내부의 항목에 의해 취소됨을 알 수 있음을 알 수 있습니다.

제공된 도움말을 미리 감사드립니다.

  (function() { 

var app = angular.module("loginApp", ['ngResource']) 
    .config(function ($httpProvider) { 
     // Enable CORS 
     $httpProvider.defaults.useXDomain = true; 
     delete $httpProvider.defaults.headers.common['X-Requested-With']; 
    }); 

app.controller('LoginController', function ($scope, $http) { 
    this.loginImage = "images/ActiveView_ContentMgm_140x40.png"; 

    this.loginUser = function() { 
     var token = ""; 
     var loginUrl = "http://ten1.com/services/rest/demoservice.svc/Login"; 

     delete $http.defaults.headers.common['X-Requested-With']; 
     var result = $http({ method: 'GET', url: loginUrl, params: { userName: this.userName, passWord: this.passWord } }) 
     .success(function (data, status) { 
      $scope.status = status; 
      $scope.data = data; 
     }) 
     .error(function (data, status) { 
      $scope.data = data || "Request failed"; 
      $scope.status = status; 
     }); 

     token = data.Token; 
    }; 

}); 

)(); 업데이트 :

바로 지금 로그인 양식의 제출 버튼을 클릭하고 웹 서비스와의 기본 통신을 확인할 수 있도록 문자열을 다시 가져 오려고합니다. 내 목표는 사용자 이름/암호를 전달하고 다시 토큰을 얻는 것입니다. 다음 폼의 :

    <form ng-submit="loginCtrl.loginUser()" novalidate> 
         <div class="form-group"> 
          <label for="exampleInputEmail1">Username</label> 
          <input type="text" class="form-control" style="border-radius:0px" ng-model="loginCtrl.loginForm.userName" placeholder="Enter username"> 
         </div> 
         <div class="form-group"> 
          <label for="exampleInputPassword1">Password </label> 
          <input type="password" class="form-control" style="border-radius:0px" ng-model="loginCtrl.loginForm.passWord" placeholder="Password"> 
         </div> 
         <button type="submit" class="btn btn-sm btn-default">Log in</button> 
+0

당신은 도메인에서 GET 요청을하고 있습니까? 아마 여기보세요 : http://stackoverflow.com/questions/16085700/angularjs-http-get-is-getting-cancelled – pixelbits

+0

그 기사를 보면 분명히 Angular의 버전이 더 이상 (1.2.17)을 사용하고 있지 않습니다. $ httpProvider ....를 지원합니다. 전화는 여전히 앵글에서 무언가에 의해 취소되고 있지만 실제 웹 서비스 요청은 여전히 ​​작동 중입니다 –

답변

2

를 주입 $ 범위 및 컨트롤러에 $ HTTP가 아닌 loginUser() 기능에 :

app.controller('LoginController', function ($scope, $http) { 
+0

고맙습니다. 그것이 뭔가 기본적인 것이어야한다는 것을 알았습니다. 이제는 호출이 이루어졌지만 매번 웹 서비스 URL을 수동으로 실행해도 매번 오류가 발생합니다. 지금 문제를 해결하려고합니다. 이견있는 사람? –

+0

업데이트 : 이제 전화가 걸리지 만, 웹 서비스 전화가 성공하면 피 될 때마다 오류가 발생하며 데이터를 다시받을 수 있습니다. 그렇다면 피들러가 통화가 정상적으로 진행된 것으로 나타나면 왜 "오류"섹션에서 종료됩니까? –

+0

확실하지 않은 경우 console.log (데이터)가 오류 처리기에 표시됩니다. – pixelbits

0

은 내가 타격 된 서비스가 "아니오"반환 된 것을 발견 액세스 - Control-Allow-Origin '메시지를 보내야 만 서비스가 완료 될 수 있지만 단락 회로가 발생할 수 있습니다. 서비스의 응답 헤더에 "Access-Control-Allow-Origin"을 추가하여이 문제를 해결했습니다.

링크 :

Cross Origin Resource Sharing for c# WCF Restful web service hosted as Windows service

"Access-Control-Allow-Origin:*" has no influence in REST Web Service

관련 문제