2016-12-14 17 views
0

何とかjsonオブジェクトをURLSearchParamsオブジェクトに追加できますか?URLSearchParamsのjsonオブジェクトを使用

ので、代わりの:

urlSearchParams.append('search', 'person'); 

それはです:

urlSearchParams.append({search: "person"}); 


Darshak Gajjarの答え

の私の答えの礼儀は、この方法によるJSONオブジェクトを使用することができます。

let test_this = [{"search": "person"}, { search: "another person"}]; 
var json = JSON.stringify(test_this); 
urlSearchParams.append("myobj", json); 

return this.http.post(this.post_url, urlSearchParams, options) //options being your own RequestOptions 

答えて

4

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

このような何かがurlSearchParams = Object.assign(urlSearchParams, {search: "person"});

EDIT働くかもしれない:バニラはJavaScriptを使用して、代替ソリューションを。また、URLSearchParamsは通常のjsオブジェクトだと思っていましたが、実際にはget,setappendをプロパティにアクセスする必要があります。

var params = new URLSearchParams("a=apple&b=balloon"); 
 
var parametersToAdd = {c: "car", d: "duck"}; 
 
for(key in parametersToAdd) 
 
    params.append(key, parametersToAdd[key]); 
 

 
console.log(params.get('c')); 
 
console.log(params.get('d')); 
 

EDITビス: .append().set()は、以前の値を上書きしているだろうが、再使用するのと同じキー/パラメータ名に対応しています。

+0

私はこれを試しました。let let = Object.assign(urlSearchParams、{number: '5'}); '動作していないようです。 –

+0

私はクロームコンソールにそのようなコードを試してみました。どのブラウザで作業していますか? 'let'は新しいキーワードなので、おそらくvarで試してみてください。また、Object.assignメソッドはIEのドキュメントでは使用できません – murtuza

+0

明日試して適切なマークを付けます –

2

は、コードの下に使用している場合がありますが、そのためのAPIはありませんURLの検索のparamに

var json = JSON.stringify(myObj); 

this.http.get('url'+'?myobj='+encodeURIComponent(json)) 
+0

私は実際にthis.http.postを使用しているので、私のためには機能しません:( –

+0

同じようにpost.http.post( 'url' + '?myobj =' + encodeURIComponent(json)) – Darshak

+0

の2つの答えをマークすることもできます。質問:( –

1

を全体JSONオブジェクトを渡すことができます。

this.get('/api/database', { 
    'age': [1,2,3,4] 
}) 

:あなただけ手動で

function appendParams(params: URLSearchParams, obj: any) { 
    for (let key in obj) { 
    if (obj.hasOwnProperty(key)) { 
     parmas.append(key, obj[key]) 
    } 
    } 
} 

appendParams(urlSearchParams, { search: 'person' }); 
+0

これで配列を送ることは可能ですか? –

1

これは私がこのget機能を使用する方法であるArray を送信するオプションをAngular2のための私の答えを共有したい性質上列挙し、それらを追加する必要がありますサービスは次のようなものです:

get(url, _params = {}) { 
    let params = this._processParams(_params); 

    return this.http.get(url, params).toPromise(); 
} 

_processParams(obj: any) { 
     /* Convert this 
      { age: [1,2,3] } 
      To: 
       param.append('age', 1); 
       param.append('age', 2); 
       param.append('age', 3); 
     */   
     let params = new URLSearchParams(); 

     for (let key in obj) { 
      for (let index in obj[key]) {     
       params.append(key, obj[key][index]); 
      } 
     } 

     return { 
      search: params 
     }; 
    } 
関連する問題