2014-11-23 6 views
0

이메일 주소가있는 특정 유권자가 한 번만 투표 할 수있는 투표 신청을 작성 하시겠습니까? 그러나 여기 코드는 너무 느려서 어떻게 실행합니까? 내가

$scope.votecheck = function(item,emailid){ 
    var email = emailid; 
    if(typeof item !== 'undefined') 
    { 
    var jsonData = $.ajax({ 
    type: "GET", 
      url: 'ajax/voters.php?id='+item.ID+'&email='+email, 
       dataType: 'text', 
       async: false 
      }).responseText; 
if(jsonData === "CanVote"){ 

    return true; 
} 
else{ 

    return false; 
     } //return "canvote"; 
    } 
} 
+0

문제는 voters.php 스크립트에있을 수 있습니다. – dbugger

+0

내 스크립트가 잘 작동하지만 av는 비동기 적으로 읽음 : false는 다른 모든 자바 스크립트 실행을 일시 중지하므로 웹 속도가 느려집니다. 성공을 반환하는 콜백을 작성할 수있는 방법을 찾을 수 있다면 : 함수 (데이터)의 범위를 벗어납니다. $ .ajax : S – Abiodun

답변

0

사용이 같은 promise 뭔가를 사용할 수있는 응답을 반환 $ http.post을 각 코드 코드 ...이 같은

$scope.voteCheck = function(email, id) { 
     var deffered = $q.defer(); 
     $http.get('ajax/voters.php?id='+item.ID+'&email='+email, { 
     }).success(function(data) { 
      deffered.resolve(data); 
     }); 
     return deffered.promise; 
    }; 

그런 전화 뭔가 ...

var votePromise = $scope.voteCheck($item.ID, email); 
     votePromise.then(function (data) { 
       return(data === "CanVote"); 
}) 
};