2017-04-06 58 views
0

我想轉換離子2應用程序中的離子應用程序,即時通訊嘗試重新登錄進度。 我在離子2應用程序寫了這個:Ionic 2 http.post登錄

loginUser(){ 
     localStorage.setItem('username', this.username); 
     localStorage.setItem('password', this.password); 
     localStorage.setItem('company', this.company); 

     this.loginData = {}; 
     this.loginData.UserID = this.username; 
     this.loginData.CompanyID = this.company; 
     this.loginData.Password = this.password; 


     let body = {"jsonLogin": JSON.stringify(this.loginData)} 
     let link = 'working link'; 
     let headers = new Headers({ 
      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' 
     }); 
     let options = new RequestOptions({headers: headers}); 

     this.http 
      .post(link, body, options) 
      .map(res => res.json()) 
      .subscribe(
       data => { 
       console.log(data); 
       //this.navCtrl.push(MenuPage); 
      }, err => { 
       console.log(err); 
      }); 
    } 

雖然在離子1個應用,這是代碼:

$scope.loginUser = function() { 
     json = {}; 
     json.UserID = $scope.data.username; 
     json.CompanyID = $scope.data.company; 
     json.Password = $scope.data.password; 

     $http({ 
      method: 'POST', 
      data: { 
       "jsonLogin": JSON.stringify(json) 
      }, 
      url: 'working link', 
      transformRequest: function (obj) { 
       var str = []; 
       for (var p in obj) 
        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); 
       return str.join("&"); 
      }, 
      headers: { 
       'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' 
      }, 
     } 

我的問題是在開機自檢的時候我張貼我的代碼離子2應用這是我的表單數據的樣子:

{ 
"jsonLogin": "{\"UserID\":\"admin\",\"CompanyID\":\"test\",\"Password\":\"pass\"}" 
}: 

雖然離子1個應用表單數據是這樣的:

jsonLogin:{"UserID":"admin","CompanyID":"test","Password":"pass"} 

POST正在工作,因爲我從服務器收到錯誤消息,我只是不知道如何格式化數據以執行正確的POST。

非常感謝您的幫助。

編輯: 得到它通過添加一個新的頭工作:

let headers = new Headers({ 
      'Content-Type': 'application/x-www-form-urlencoded', 
      'Accept': '*/*' 
     }); 

,併發送一個硬編碼字符串:

createStringForLogin(username: any, company: any, password: any){ 
     return 'jsonLogin={"UserID":"'+username+'","CompanyID":"'+company+'","Password":"'+password+'"}'; 
    } 

回答

1

我覺得

let body = {"jsonLogin": this.loginData}; 

應解決您的問題。讓我知道如果它不起作用。

另外,如果您在將參數設置爲this.loginData時遇到問題。設置他們是這樣的:

this.loginData = {}; 
this.loginData['UserID'] = this.username; 
this.loginData['CompanyID'] = this.company; 
this.loginData['Password'] = this.password; 
+0

沒有工作...有輸出http://imgur.com/5QHHYUl –

+0

我認爲它的工作原理是正確的? Json根據您的要求進行格式化。現在,你如何發送給服務器取決於你。如果不是現在有什麼問題?此外,我沒有在這裏糾正任何職位行爲。如果發佈請求和參數有問題,那麼你需要糾正它。 –

+0

我的問題是得到POST的方式,它必須是...我不是離子1應用程序的所有者,我剛剛得到的工作,將其轉換爲離子2,所以我不知道什麼服務器期望登錄,我只是知道,如果郵政像離子1應用程序一樣,它會工作... 而你可以在上面的問題中看到,我只是想輸出是在這樣一行:「jsonLogin: {「UserID」:「admin」,「CompanyID」:「test」,「Password」:「pass」}「 –