2017-08-25 8 views
1

Also, ich habe den nächsten Code in Javascript, wo Wert im Http Beitrag param in url Winkel 2

//params = 5 
function httpPostAsync(url, params){ 
    // test: curl -X POST http://url/brightness/5 
    var http = new XMLHttpRequest(); 
    http.open("POST", "/brightness/"+ params , true); 

    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    http.onreadystatechange = function() { 
     if(http.readyState == 4 && http.status == 200) { 
      //Popup good for debugging 
     } 
    } 
    http.send(null); 
} 

Meine Frage ist

URL senden, wie kann ich tun dies in Eckige? Ich habe den nächsten Code, aber es hat nicht den Wert senden '5' in der URL

// Dienst

postValue(data) { 
    let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }); 
    let options = new RequestOptions({ headers: headers }); 
    let params = new URLSearchParams(); 
    params.append('value', data); 
    return this.http.post(url, params.toString(), options) 
     .timeoutWith(2000); 
    } 

// Komponente

let value = 5; 
this._localserverService.postValue(value).subscribe(); 

Ich weiß, dass, wenn ich Senden Sie Daten mit form-urlencoded Inhaltstyp, ich sollte die Daten im Abfragezeichenfolgenformat mit Schlüssel = Wert-Paaren senden. Aber das war in meinem alten Code nicht nötig.

Ich weiß auch, dass der zweite Parameter von http.post ist der Körper der Nachricht (die Nutzlast) und nicht die URL-Suchparameter.

Was soll ich anders machen?

Danke!

Antwort

0

In diesem Fall fügen Sie Sie einfach data auf Ihre URL:

postValue(data) { 
    // You might not even need to set the header, as you body is anyway empty... 
    let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' }); 
    let options = new RequestOptions({ headers: headers }); 

    return this.http.post(`url/${data}`, null, options) 
     .timeoutWith(2000); 
    } 

URLSearchParams für Query-String-Parameter verwendet wird (so etwas wie http://url/brightness?value=5), aber wenn man die 5 als Abschnitt der URL wollen (so http://url/brightness/5), sollte der Code oben tun.

+0

Ich wusste nicht, dass das möglich war. Vielen Dank! – sie