2017-08-02 103 views
2

我試圖通過使用$ AngularJS做了Web 2.0 API調用不工作http.post返回JSON和怪異,因爲這可能聽起來,這一個小時前的工作,現在它不,我沒有改變一件事。該應用程序繼續在所有其他瀏覽器中工作,它只是在Edge中失敗。

var _login = function (loginData) { 
     var data = ""; 
     var grant = [insert data to authorise user on server]; 
     var deferred = $q.defer(); 
     $http.post(serviceBase + 'token', data, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).success(function (response) { 
      _userlogin(response); 
      deferred.resolve(response); 
     }).error(function (err, status) { 
      console.log(err + " " + status); 
      _logOut(); 
      deferred.reject(err); 
     }); 
     return deferred.promise; 
    }; 

我不得不採取一些信息在那裏,因爲它的安全性信息,但功能應該是相同的,因此,從調試我知道,這是在應用程序絆倒。我也知道傳入的logindata是有效的,並且我在REST客戶端上嘗試了相同的調用,並且工作正常,就像我之前提到的在沒有任何其他主要瀏覽器(包括IE古怪)。

當該調用運行,前端角度進行以下操作:

$scope.authUser = function (username, password) { 
      var loginData = { userName: username, password: password, useRefreshTokens: login.useRefreshTokens} 
      authService.login(loginData).then(function (response) { 
       console.log(response); 
       sessionStorage.setItem("status", "User Logged In As: "); 
       sessionStorage.setItem("username", username); 
       global.template = "templates/dashboard.html"; 
       login.password = ""; 
      }, 
      function (err) { 
       console.log(err); 
       login.message = err.error_description; 
       $("#passwordError").modal(); 
      }); 
     }; 

應用程序停止在login.message = err.error_description;,因爲它沒有從API調用返回。錯誤是:網絡錯誤0x2efd,由於錯誤00002efd,無法完成操作。並且無法獲取未定義或空引用的屬性'error_description'。

編輯:忘了提 - 應用程序工作時提琴手是開放的,捕獲流量。這是最奇怪的部分。

+0

從代碼中刪除所有'console.log'。有時候,它解決了IE問題。 – Mistalis

+0

還沒有破 - 兩個錯誤是:無法獲取未定義或空引用的屬性'error_description'和網絡錯誤0x2efd,由於錯誤00002efd無法完成操作。 –

+0

我不確定,但可能與您的標題有關的問題。只需將它們更改爲application/json並檢查(確保問題仍然存在)。在我的應用程序中,http現在可以正常工作。 – Vitalii

回答

1

看看this後,其使用的方案中提到here。他們說這個問題是在localhost和localhost之間進行交互。

我很高興能夠提供幫助。