2014-11-23 41 views
0

上午建立一个投票应用程序,其中一个具有电子邮件地址的特定投票人只能投票一次 但是我在这里的代码运行速度太慢,请如何我转换以下代码为$ http.post角码返回,我可以使用

$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

这个问题可能在vot.php脚本中。 – dbugger 2014-11-23 13:22:49

+0

我的脚本工作正常,但AV阅读异步:假减慢网络,因为它暂停所有其他的JavaScript执行..如果我能找到一种方法来写回调成功的回调:功能(数据)超出了范围$ .ajax:S – Abiodun 2014-11-23 13:27:14

回答

0

使用promise 像这样的响应...

$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"); 
}) 
};