2015-02-06 8 views
1

이 코드에서 작동하는 $ http에는 2 가지 문제가 있습니다.각도 함수 AJAX 호출

$scope.buttonClick = function(){ 
    // Send input data 
     $.post('lib/add_contact.php', $scope.contact, function(data){ 
      data = angular.fromJson(data); 
      if(!data.error){ 
       $scope.contact = ""; 
       console.log('success'); 
      }else{ 
       console.log('error'); 
      } 
     }); 

    // Next Code 
    console.log('Next Code'); 
} 

첫 번째 문제는 연락처를 지우고 싶을 때 바로 작동하지 않지만 키를 입력 한 후에 만 ​​발생합니다. 넣으면

$scope.contact = ""; 

POST가 아닌 경우 제대로 작동합니다.

두 번째 문제는 POST가 왜 마지막으로 호출되는 것입니까? 코드의 출력

Code Next 
success 

입니다하지만 난 그 출력 아이디어와 답변을

success 
Code Next 

감사 할 싶습니다.

+0

AJAX는 비동기 (컨트롤러에 종속성으로 추가하는 것을 잊지 마세요) $http를 사용

아약스 얼마 후 다음 CONSOLE.LOG 후 백그라운드에서 계속 실행 통화가 완료되었습니다. – Musa

답변

0

각도 세계 외부에서 발생하는 ajax 호출에 jQuery가 사용됩니다. 변경 내용이보기에 반영되도록 범위의 다이제스트주기를 트리거해야합니다.

$scope.buttonClick = function(){ 
    // Send input data 
     $.post('lib/add_contact.php', $scope.contact, function(data){ 
      data = angular.fromJson(data); 
      if(!data.error){ 
       $scope.$apply(function(){ //<-- calling $apply() 
        $scope.contact = ""; 
       }); 
       console.log('success'); 
      }else{ 
       console.log('error'); 
      } 
     }); 

    // Next Code 
    console.log('Next Code'); 
} 

선호하는 방식이 (가) $http 서비스가 각도에 대해 알고 자동으로 요약을 유발하는 각도의 내부에 포함 된 내장 사용하는 것입니다 그러나 :

이 문제를 해결하려면. 그 첫 번째라고 있도록

$scope.buttonClick = function() { 
    $http.post('lib/add_contact.php', $scope.contact).success(function(data) { 
     data = angular.fromJson(data); 
     if (!data.error) { 
      $scope.$apply(function() { //<-- calling $apply() 
       $scope.contact = ""; 
      }); 
      console.log('success'); 
     } else { 
      console.log('error'); 
     } 
    }); 
} 
+0

감사합니다. 첫 번째 솔루션은 잘 작동합니다. $ http를 사용하려고했지만 jQuery soluton을 사용할 때 문제가 발생하여 PHP에서 데이터를 가져 왔습니다. – Daniel