2017-06-21 6 views
1

Der Content-Type des HTTP-Headers ist application/x-www-form-urlencodedHttp Beitrag String-Wert in Körper

ich einen String-Wert posten. environmentId: "predevnet"

In meinem letzten Projekt habe ich JQuery, um den Ajax-Aufruf zu machen:

$.ajax({ 
     headers: this.headers, 
     type: this.type, 
     url: this.url, 
     data: {environmentId: "predevnet"}, 
     dataType: this.dataType, 
     contentType: this.contentType, 
     async: isAsync, 
     success: success, 
     cache: this.cache, 
     error: error 
    }); 

Nun erwartete ich versuche, den gleichen Anruf in Winkel

return this.http 
    .post(this.baseUrl + action, JSON.stringify({environmentId: "predevnet"}), options) 
    .map(response => response.json() as DcResponse<T>);` 

Ergebnis zu tun: Das Formular Daten sollten so sein: Result Expected

Und Ergebnisse, die ich mit und ohne JSON.stringify bekomme, ist wie folgt:

+0

Funktioniert es, wenn Sie festgelegt der Content-Type-Header zur Anwendung/json? –

+0

Nein, ich habe versucht, aber es sendet ein Json-Objekt .. Es muss nur die Variable mit ihrem Namen senden –

+0

Haben Sie versucht, 'toString()' anstelle von 'JSON.stringify()' zu verwenden? – Alex

Antwort

0

Wenn Sie im Hauptteil der POST-Anforderung nur ein Schlüssel/Wert-Paar als Parameter senden möchten, müssen Sie den Schlüsselteil weglassen.

Also, wenn Sie Content-Type wollen als application/x-www-form-urlencoded dann zB so sein muss:

return this.http 
    .post(this.baseUrl + action, '=predevnet', options) 
    .map(response => response.json() as DcResponse<T>);` 

Andernfalls, wenn Sie application/json dann bevorzugen Sie schreiben:

return this.http 
    .post(this.baseUrl + action, '"predevnet"', options) 
    .map(response => response.json() as DcResponse<T>);`