2016-01-05 158 views
1

你好即時通訊使用異步驗證器來檢查電子郵件是否存在於我的數據庫,它檢查,它給了我正確的http請求,它工作正常使用例如在第一次註冊,它會檢查用戶是否存在於我的數據庫中。問題是,例如,當我用來恢復密碼。該文件說:基於異步驗證器的驗證

「如果$使用HTTP則是重要的服務器,以滿足驗證和4xx以拒絕驗證的狀態水平返回成功的HTTP響應代碼 *」

所以發生在我身上的是當用戶在恢復密碼頁面中插入電子郵件時,它給出了'400 - 錯誤的請求'的迴應,並使表單/輸入無效。我需要改變這個beavihour,因爲當提供400請求來驗證真實性,並且如果響應是200,則驗證是錯誤的。

示例代碼JS:

return { 
    restrict: 'A', 
    require: 'ngModel', 
    link: function (scope, element, attribute, controller) { 
     controller.$asyncValidators.uniqueEmail = function (email) { 
      return $http 
       .post('/api/email/availability', {value: email}) 
       then(function(response) { 
         //username exists, this means validation fails 
         return $q.reject('exists'); 
         }, function(response) { 
         //username does not exist, therefore this validation passes 
         return true; 
       }) 
     }; 
    } 
} 
+0

創建plnkr幫助別人理解你的問題,更好地 –

回答

0

檢查您在$ HTTP回調得到響應對象,它包含狀態代碼。

$http docs

function(response) { 
    if (response.status == 200) { return true; } 
} 
+0

我已經嘗試過了。 –

+0

也注意到回調中的第一個函數是用於成功的,第二個用於錯誤處理。請參閱https://docs.angularjs.org/api/ng/service/$q –