2017-04-06 5 views
0

Ich versuche, eine ionische App in einer ionic 2 App zu konvertieren und versuchen, den Login-Fortschritt neu zu erstellen. schrieb ich in meinem ionischen 2 App:Ionic 2 http.post Login

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

Während in der ionischen 1 app dies der Code war:

$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' 
      }, 
     } 

Mein Problem in der POST ist, wenn ich mit meinem Code der Post ionische 2 App das ist, was meine Formulardaten wie folgt aussieht:

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

Während die ionische 1 App Formulardaten wie folgt aussieht:

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

Der POST funktioniert, da ich eine Fehlermeldung vom Server bekommen habe, ich weiß einfach nicht, wie ich die Daten formatieren kann, um einen korrekten POST zu machen.

Vielen Dank im Voraus für die Hilfe.

EDIT: Verstanden von hinzugefügt einen neuen Header arbeiten:

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

Und eine hartcodierte Zeichenfolge senden:

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

Antwort

1

Ich denke

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

sollte lösen Ihre Problem. Lass es mich wissen, wenn es nicht funktioniert.

Wenn Sie Probleme beim Einstellen der Parameter auf this.loginData haben. Stellen Sie sie wie folgt aus:

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

hat nicht funktioniert ... ist der Ausgang http://imgur.com/5QHHYUl –

+0

Ich denke, es war richtig? Json ist nach Ihren Anforderungen formatiert. Nun, wie Sie es an den Server senden, ist Ihnen überlassen. Wenn nicht, was ist das Problem jetzt? Außerdem korrigiere ich hier kein Post-Verhalten. Wenn es ein Problem in Post-Anfrage und Parametern gibt, dann müssen Sie es korrigieren. –

+0

Mein Problem ist, den POST so zu bekommen, wie er sein muss ... Ich bin nicht der Besitzer der ionic 1 App, ich habe gerade die Arbeit, es in die ionische 2 umzuwandeln, also weiß ich nicht, welchen Server ich erwarte login, ich weiß nur, ob der POST genauso funktioniert wie die ionic 1 App, die funktioniert ... Und wie Sie in der obigen Frage sehen können, wollte ich nur, dass die Ausgabe in einer Zeile wie dieser ist. "jsonLogin: {"UserID": "admin", "CompanyID": "test", "Passwort": "pass"} " –